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() ? 计算序列中的相邻元素是否相同

posted on 2012-10-20 10:57  赛欧拉  阅读(138)  评论(0)    收藏  举报