STL-algorithm
void sort(RanIt first,RanIt last);
stable_sort(); //稳定排序
InIt find(InIt first,Init last,const T& value);
bool binary_search(FwdIt first,FwdIt last,const T& value); //折半查找,要求容器已有序
查找
count ( ForwardIterator first, ForwardIterator last, const T& value ); 统计某个值出现的次数
count_if ( ForwardIterator first, ForwardIterator last, Predicate pred ); 统计符合某条件的值出现的次数
InputIterator find ( InputIterator first, InputIterator last, const T& value ); 在序列中找出某个值第一次出现的位置
InputIterator find_if ( InputIterator first, InputIterator last, Predicate pred ); 在序列中找出符合某维持的第一个元素
ForwardIterator1 find_end ( ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2 );
ForwardIterator1 find_end ( ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred ); 在序列中找出一子序列最后一次出现的位置
ForwardIterator1 find_first_of ( ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2 );
ForwardIterator1 find_first_of ( ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred ); 找出第一次出现指定值集中的值的位置
ForwardIterator adjacent_find ( ForwardIterator first, ForwardIterator last );
ForwardIterator adjacent_find ( ForwardIterator first, ForwardIterator last,
BinaryPredicate pred ); 找出相邻的一对值
ForwardIterator lower_bound ( ForwardIterator first, ForwardIterator last,
const T& value );
ForwardIterator lower_bound ( ForwardIterator first, ForwardIterator last,
const T& value, Compare comp ); 找到大于等于某值的第一次出现的位置
ForwardIterator upper_bound ( ForwardIterator first, ForwardIterator last,
const T& value );
ForwardIterator upper_bound ( ForwardIterator first, ForwardIterator last,
const T& value, Compare comp ); 找到大于某值第一次出现的位置
pair<ForwardIterator,ForwardIterator>
equal_range ( ForwardIterator first, ForwardIterator last, const T& value );
pair<ForwardIterator,ForwardIterator>
equal_range ( ForwardIterator first, ForwardIterator last, const T& value,
Compare comp ); 找到与给定值相等的范围
bool binary_search ( ForwardIterator first, ForwardIterator last,
const T& value );
bool binary_search ( ForwardIterator first, ForwardIterator last,
const T& value, Compare comp ); 在有序的情况下二分查找
ForwardIterator1 search ( ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2 );
ForwardIterator1 search ( ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2.
BinaryPredicate pred ); 子序列第一次出现的位置
ForwardIterator search_n ( ForwardIterator first, ForwardIterator last,
Size count, const T& value );
ForwardIterator search_n ( ForwardIterator first, ForwardIterator last,
Size count, const T& value, BinaryPredicate pred ); 某个值连续n次出现的位置
pair<InputIterator1, InputIterator2>
mismatch (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2 );
pair<InputIterator1, InputIterator2>
mismatch (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, BinaryPredicate pred ); 找出两个序列相异的第一个元素
排序和通用算法
void sort ( RandomAccessIterator first, RandomAccessIterator last );
void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp ); 排序
void stable_sort ( RandomAccessIterator first, RandomAccessIterator last );
void stable_sort ( RandomAccessIterator first, RandomAccessIterator last,
Compare comp ); 稳定排序,并维持相同元素的原有顺序
void partial_sort ( RandomAccessIterator first, RandomAccessIterator middle,
RandomAccessIterator last );
void partial_sort ( RandomAccessIterator first, RandomAccessIterator middle,
RandomAccessIterator last, Compare comp ) 将序列的前一部分排序,后一部分不动
RandomAccessIterator
partial_sort_copy ( InputIterator first,InputIterator last,
RandomAccessIterator result_first,
RandomAccessIterator result_last );
RandomAccessIterator
partial_sort_copy ( InputIterator first,InputIterator last,
RandomAccessIterator result_first,
RandomAccessIterator result_last, Compare comp ); 复制时排序前一部分
void nth_element ( RandomAccessIterator first, RandomAccessIterator nth,
RandomAccessIterator last );
void nth_element ( RandomAccessIterator first, RandomAccessIterator nth,
RandomAccessIterator last, Compare comp ); 将第n个元素放到它正确的位置
void reverse ( BidirectionalIterator first, BidirectionalIterator last); 反转
OutputIterator reverse_copy ( BidirectionalIterator first,
BidirectionalIterator last, OutputIterator result ); 复制时反转
void rotate ( ForwardIterator first, ForwardIterator middle,
ForwardIterator last ); 循环移动元素
OutputIterator rotate_copy ( ForwardIterator first, ForwardIterator middle,
ForwardIterator last, OutputIterator result ); 复制时循环移动
void random_shuffle ( RandomAccessIterator first, RandomAccessIterator last );
void random_shuffle ( RandomAccessIterator first, RandomAccessIterator last,
RandomNumberGenerator& rand ); 采用均匀分布来随即移动元素
BidirectionalIterator partition ( BidirectionalIterator first,
BidirectionalIterator last, Predicate pred ); 将满足条件的元素都放到前面
BidirectionalIterator stable_partition ( BidirectionalIterator first,
BidirectionalIterator last,
Predicate pred );将满足条件的元素都放到前面并维持原顺序
OutputIterator merge ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result );
OutputIterator merge ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result, Compare comp ); 归并两个有序序列
void inplace_merge ( BidirectionalIterator first, BidirectionalIterator middle,
BidirectionalIterator last );
void inplace_merge ( BidirectionalIterator first, BidirectionalIterator middle,
BidirectionalIterator last, Compare comp ); 归并两个接续的有序序列
替换和删除
OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result );() 从序列的第一个元素起进行复制
BidirectionalIterator2 copy_backward ( BidirectionalIterator1 first,
BidirectionalIterator1 last,
BidirectionalIterator2 result ); 还是顺序复制,只是从序列的最后一个元素起进行复制
void replace ( ForwardIterator first, ForwardIterator last,
const T& old_value, const T& new_value ); 用一个给定值替换一些值
void replace_if ( ForwardIterator first, ForwardIterator last,
Predicate pred, const T& new_value ); 替换满足条件的元素
OutputIterator replace_copy ( InputIterator first, InputIterator last,
OutputIterator result,
const T& old_value, const T& new_value ); 复制序列时用一给定值替换元素
OutputIterator replace_copy_if ( InputIterator first, InputIterator last,
OutputIterator result, Predicate pred,
const T& new_value ); 复制序列时替换满足条件的元素
void swap ( T& a, T& b ); 交换两个元素
ForwardIterator2 swap_ranges ( ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2 ); 交换指定范围的元素
iter_swap() 交换由迭代器指定的两个元素
ForwardIterator remove ( ForwardIterator first, ForwardIterator last,
const T& value ); 删除具有给定值的元素
ForwardIterator remove_if ( ForwardIterator first, ForwardIterator last,
Predicate pred ); 删除满足条件的元素
OutputIterator remove_copy ( InputIterator first, InputIterator last,
OutputIterator result, const T& value ); 复制序列时删除具有给定值的元素
OutputIterator remove_copy_if ( InputIterator first, InputIterator last,
OutputIterator result, Predicate pred ); 复制序列时删除满足条件的元素
ForwardIterator unique ( ForwardIterator first, ForwardIterator last );
ForwardIterator unique ( ForwardIterator first, ForwardIterator last,
BinaryPredicate pred ); 删除相邻的重复元素
OutputIterator unique_copy ( InputIterator first, InputIterator last,
OutputIterator result );
OutputIterator unique_copy ( InputIterator first, InputIterator last,
OutputIterator result, BinaryPredicate pred ); 复制序列时删除相邻的重复元素
生成和变换
void fill ( ForwardIterator first, ForwardIterator last, const T& value ); 用一给定值取代所有元素
void fill_n ( OutputIterator first, Size n, const T& value ); 用一给定值取代前n个元素
void generate ( ForwardIterator first, ForwardIterator last, Generator gen ); 用一操作的结果取代所有元素
void generate_n ( OutputIterator first, Size n, Generator gen ); 用一操作的结果取代前n个元素
Function for_each (InputIterator first, InputIterator last, Function f); 对序列中的每个元素执行某操作
OutputIterator transform ( InputIterator first1, InputIterator last1,
OutputIterator result, UnaryOperator op );
OutputIterator transform ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, OutputIterator result,
BinaryOperator binary_op ); 将某操作应用于指定范围的每个元素
关系
const T& min ( const T& a, const T& b );
const T& min ( const T& a, const T& b, Compare comp ); 两个值中小的
max() 两个值中大的
ForwardIterator min_element ( ForwardIterator first, ForwardIterator last );
ForwardIterator min_element ( ForwardIterator first, ForwardIterator last,
Compare comp ); 序列中最小的元素
max_element() 序列中最大的元素
bool lexicographical_compare ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2 );
bool lexicographical_compare ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
Compare comp ); 两个序列按字典序第一个在前
bool includes ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2 );
bool includes ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2, Compare comp ); 第二个序列为第一个序列的子序列时为真,两个序列必须已经排序
bool equal ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2 );
bool equal ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, BinaryPredicate pred ); 两个序列对应元素都相同时为真
集合操作
OutputIterator set_union ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result );
OutputIterator set_union ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result, Compare comp ); 并集
set_intersection() 交集
set_difference() 差集
set_symetric_difference() 对称差集
堆操作
void push_heap ( RandomAccessIterator first, RandomAccessIterator last );
void push_heap ( RandomAccessIterator first, RandomAccessIterator last,
Compare comp ); 向堆中加入元素,调用完该函数后必须调用push_back
void pop_heap ( RandomAccessIterator first, RandomAccessIterator last );
void pop_heap ( RandomAccessIterator first, RandomAccessIterator last,
Compare comp ); 弹出元素,调用完该函数后必须再调用pop_back函数
void make_heap ( RandomAccessIterator first, RandomAccessIterator last );
void make_heap ( RandomAccessIterator first, RandomAccessIterator last,
Compare comp ); 从序列构造堆
void sort_heap ( RandomAccessIterator first, RandomAccessIterator last );
void sort_heap ( RandomAccessIterator first, RandomAccessIterator last,
Compare comp ); 堆排序
is_heap() ?
算术和组合算法
bool next_permutation (BidirectionalIterator first,
BidirectionalIterator last );
bool next_permutation (BidirectionalIterator first,
BidirectionalIterator last, Compare comp); 按字典序的下一个排列
bool prev_permutation (BidirectionalIterator first,
BidirectionalIterator last );
bool prev_permutation (BidirectionalIterator first,
BidirectionalIterator last, Compare comp); 按字典序的前一个排列
accumulate() ? 累加序列的所有元素
partial_sum() ?
inner_product() ?
adjacent_difference() ? 计算序列中的相邻元素是否相同
浙公网安备 33010602011771号