您的位置:首页 > 编程语言 > C语言/C++

STL算法目录

2014-08-30 11:40 176 查看

STL算法---查找算法

1. adjacent_find (相邻查找)

在范围[_First, _Last)查找第一对相邻相等的元素, 并返回这对元素的前面的iterator

2. binary_search (二分查找)

在有序序列中查找value,找到返回true。

3. count(统计)

4. count_if(统计)

在[_First, _Last)范围内的元素与输入值_Val比较, 返回相等元素个数

5. equal_range(也是使用二分查找的算法)

对已排序的[first, last)中寻找value的可插入位置, 它返回一对迭代器

6. find 和find_if元素查找

对范围[first, last)内的元素与输入值val进行比较. 当匹配时,结束搜索, 返回该元素的一个InputIterator

7. find_end(找到最后一组, 并返回)

在范围[first1, last1)内查找"[first2, last2)"的最后一次出现.找到则返回最后一对的第一个ForwardIterator,否则返回last1.

8. find_first_of(找到其中一个, 并返回)

在范围[first1, last1)内查找"[first2, last2)"中任意一个元素的第一次出现, 如果存在则返回. 重载版本中使用了用户自定义操作符

9. lower_bound和upper_bound(第一个大于等于;第一个大于)

lower_bound返回一个非递减序列[first, last)中第一个大于等于值val的位置。

upper_bound返回一个非递减序列[first, last)中第一个大于val的位置。

10. search

在[first1, last1)中, 查找成功指向第一个范围内第一次出现子序列(第二个范围)的位置,查找失败指向last1,

11. search_n(查找val出现n次的子序列)

在指定范围内查找val出现n次的子序列。

STL算法---堆算法

1. 实现堆栈

有4个函数(make_heap, push_heap, pop_heap, sort_heap)

STL算法---关系算法(大于/小于/相等/包含)

1. equal(判断两序列是否相等)

[first, last)与[x, x + last - first)每个对应位置的元素相等, 返回true.(默认使用等于操作符) 

2. includes(判断两序列是否存在包含关系)

判断[first1, last1)内的所有元素是否都包含[first2, last2), 使用底层元素的<操作符, 成功返回true.

3. lexicographical_compare(以字典排列方式进行比较, 例如字符串的大小比较)

以字典排列方式进行比较

例如: "a" < "b"; "ab" < "b;" "1" < "2"; "11" < "2"; "A" < "AB" (字符的比较)

4. max / max_element / min / min_element(返回最大/最小元素)

4.1 max 

返回两个元素中较大一个。

4.2 max_element 

返回一个ForwardIterator,指出序列中最大的元素。

4.3 min

返回两个元素中较小一个。

4.4 min_element

返回一个ForwardIterator,指出序列中最小的元素。

5. mismatch (并行比较两个序列)

STL算法---集合算法

1. set_union(并集)

2. set_intersection(交集)

3. set_difference(-交集)

4. set_symmetric_difference(并集-交集)

STL算法---排序算法

1. nth_element

将范围内的序列重新排序, 使所有小于等于第n个元素的元素都出现在它前面,而大于它的都出现在后面。

2. partial_sort / partial_sort_copy (部分排序)

2.1 partial_sort

对序列做部分排序, 被排序元素个数正好可以被放到范围内.

2.2 partial_sort_copy

与partial_sort类似,不过将经过排序的序列复制到另一个容器

3. partition / stable_partition(分类排序)

3.1 partition

3.2 stable_partition

与partition类似, 但了保留容器中的相对顺序

4. random_shuffle(随机调整次序)

5. reverse / reverse_copy(反序排序)

6. sort / stable_sort

7. rotate / rotate_copy

把[first, middle)的元素拷贝到last的后面; 或者说把[middle, last)的元素拷贝到first的前面.

8. inplace_merge / merge

8.1 inplace_merge

合并两个有序序列,结果序列覆盖两端范围。

8.2 merge

合并两个有序序列,存放到另一个序列。重载版本使用自定义的比较

STL算法---拷贝/删除/替换算法

1. copy / copy_backward(复制序列)

1.1 copy 复制序列

1.2 copy_backward 与copy相同,不过元素是从后面开始顺序拷贝填充

2. iter_swap

交换两个ForwardIterator的值, 就是两个值的交互.

3. remove / remove_copy / remove_if / remove_copy_if (删除操作)

3.1 remove

删除[first, last)内所有等于val的全部元素。例如在std::vector中元素被左移.

3.2 remove_copy

将所有不匹配元素复制到一个制定容器,返回OutputIterator指向被拷贝的末元素的下一个位置

3.3 remove_if

删除指定范围内输入操作结果为true的所有元素

3.4 remove_copy_if

将所有不匹配元素拷贝到一个指定容器

4. replace / replace_copy / replace_if / replace_copy_if (替换操作)

4.1 replace

将指定范围内所有等于vold的元素都用vnew代替

4.2 replace_copy

与replace类似,不过将结果写入另一个容器

4.3 replace_if

将指定范围内所有操作结果为true的元素用新值代替

4.4 replace_copy_if

与replace_if,不过将结果写入另一个容器

5. swap / swap_ranges 

5.1 swap 

交换存储在两个对象中的值

5.2 swap_ranges

将指定范围内的元素与另一个序列元素值进行交换

6. unique / unique_copy (清除序列中重复元素)

6.1 unique

清除序列中连续重复元素。例如: 11, 12, 12, 14 调用后变成 11, 12, 14. 

6.2 unique_copy

与unique类似,不过把结果输出到另一个容器

STL算法---生成和变异算法(遍历元素, 对元素做一些事情)

1. fill / fill_n

1.1 fill

将[first, last)中的元素赋值为x

1.2 fill_n

将输入值赋给first到first + n范围内的所有元素

2. for_each

用指定函数依次对指定范围内所有元素进行迭代访问,返回所指定的函数类型。该函数不得修改序列中的元素

3. generate / generate_n

3.1 generate

连续调用输入的函数来填充指定的范围

3.2 generate_n

与generate函数类似,填充从指定iterator开始的n个元素

4. transform

将输入的操作作用与指定范围内的每个元素,并产生一个新的序列。

STL算法---数学计算算法

1. accumulate

iterator对标识的序列段元素之和,加到一个由val指定的初始值上。重载版本不再做加法,而是传进来的二元操作符被应用到元素上

2. partial_sum

创建一个新序列,其中每个元素值代表指定范围内该位置前所有元素之和。重载版本使用自定义操作代替加法

3. product

对两个序列做内积(对应元素相乘,再求和)并将内积加到一个输入的初始值上。重载版本使用用户定义的操作

4. adjacent_difference

创建一个新序列,新序列中每个新值代表当前元素与上一个元素的差。重载版本用指定二元操作计算相邻元素的差

5. 排列组合算法

5.1 next_permutation

取出当前范围内的排列,并重新排序为下一个排列。重载版本使用自定义的比较操作

5.2 prev_permutation

取出指定范围内的序列并将它重新排序为上一个序列。如果不存在上一个序列则返回false。重载版本使用自定义的比较操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  STL算法 C++ STL