天天看点

头文件 algorithm 中的常用函数

algorithm意为"演算法", 是C++的标准模版库(STL) 中最重要的头文件之一,提供了大量基于迭代器的非成员模版函数。

库函数:

accumulate 累加序列的所有元素 adjacent_difference 计算序列中的相邻元素是否不同 adjacent_find 查找相邻的两个相同(或者有其他关联)元素 any_of 如果对于任意元素的谓词测试都为true,则返回true (C++11) all_of 如果对于所有元素的谓词测试都为true,则返回true (C++11) binary_search 确定容器中是否存在某个元素 copy 拷贝元素到新的位置 copy_backward 逆序拷贝元素 count 返回匹配给定值的元素数目 count_if 返回符合条件的元素数目 (C++11) equal 确定两个集合中的所有元素皆相同 equal_range 搜索序列中的由相同元素组成的子序列 fill 为一个序列赋值 fill_n 为序列中给定数目的元素赋值 find 在序列中查找一个匹配值的元素 find_end 在序列中查找最后出现的序列 find_first_of 在序列中查找给定集合的任一元素 find_if 在序列中查找第一个符合条件的元素 for_each 为序列中的每个元素应用指定的函数 generate 将函数的运行结果储存在一个序列中 generate_n 将N次驱动函数的结果储存在一个序列中 includes 检查一个集合是否是另外一个集合的子集 inner_product 计算两个序列的内积 inplace_merge 内置式归并 is_heap 检查给定的序列是否是堆 (C++11) iter_swap 交换两个迭代器指向的元素 lexicographical_compare 按字典顺序检查一个序列是否小于另外一个序列 lower_bound 查找第一个插入元素但不影响序列有序性的位置 make_heap 创建一个堆并以序列的形式输出 max 返回两个元素间的较大者 (C++11) max_element 返回序列中的最大者 merge 对两个有序序列进行归并处理 min 返回两个元素间的较小者 (C++11) min_element 返回序列中的最小者 mismatch 查找两个序列的第一个不相同的位置 next_permutation 依照字典顺序生成序列的下一个稍大的排列 none_of 如果对于所有元素的谓词测试都为false,则返回true (C++11) nth_element 插入一个元素至它的排序位置并确保它左边的元素都不大于它右边的元素 partial_sort 将序列中的前N个元素排序 partial_sort_copy 拷贝并部分排序 partial_sum 计算序列中部分元素之和 partition 将元素序列分成两组 pop_heap 从一个堆中移除最大的元素 prev_permutation 依照字典顺序生成序列的下一个稍小的排列 push_heap 添加一个元素至堆 random_shuffle 随机生成元素的一个排列 remove 移除给定值的所有元素 remove_copy 拷贝一个序列中元素的同时忽略那些匹配给定值的元素 remove_copy_if 拷贝一个序列中元素的同时忽略那些符合条件的元素 remove_if 移除序列中所有符合条件的元素 replace 将序列中的一些元素以另外一个值替换 replace_copy 拷贝一个序列并将其中一些替换为新值 replace_copy_if 拷贝一个序列的元素并替换掉那些符合条件的元素 replace_if 替换掉符合条件的元素 reverse 将给定序列反转顺序 reverse_copy 以逆序拷贝元素的方式创建序列的副本 rotate 调换一些元素到序列的左边 rotate_copy 拷贝并调换元素 search 搜索子序列 search_n 搜索N个连续的元素拷贝 set_difference 计算两个集合的差集 set_intersection 计算两个集合的并集 set_symmetric_difference 计算两个集合的对称差 set_union 计算两个集合的交集 sort 将序列按升序排序 sort_heap 将堆转变成有序序列 stable_partition 将元素划分成两组且维持原来的元素次序 stable_sort 将序列排序并且维持相等元素的原始次序 swap 交换两个对象的值 swap_ranges 交换两个序列的元素 transform 通过给定函数转换序列元素 unique 移除连续的重复元素 unique_copy 拷贝序列并忽略相同元素以创建一个无重复元素的集合 upper_bound 搜索最后一个插入元素并能维持序列有序性的位置(第一个稍大于给定值的位置)    

头文件algorithm中的常用函数分类:

1. 查找算法 (13)  

    为判断容器中是否包含某一个值提供

adjacent_find()

binary_search()

count()

count_if()

equal_range()

find()

find_end()

find_first_of()

find_if()

lower_bound()

upper_bound()

search()

search_n()

2. 排序(sorting)和通用(ordering)算法(14)

    提供元素的排序策略。

    其中stable算法保证相等元素的原来顺序不变。

inplace_merge()

merge()

nth_element()

partial_sort()

partial_sort_copy()

partition()

random_shuffle()

reverse()

reverse_copy()

rotate()

rotate_copy()

sort()

stable_sort()

stable_partition()

3. 删除和替换算法(15)

copy()

copy_backwards()

iter_swap()

remove()

remove_copy()

remove_if()

remove_copy_if()

replace()

replace_copy()

replace_if()

replace_copy_if()

swap()

swap_range()

unique()

unique_copy()

4. 排列组合算法(2)

    提供计算给定集合按一定顺序的所有可能的排列组合。

next_permutation()

prev_permutation()

5. 算术算法(4)

accumulate()

partial_sum()

inner_product()

adjacent_difference()

6. 生成和异变算法(6)

fill()

fill_n()

for_each()

generate()

generate_n()

transform()

7. 关系算法(7)

equal()

includes()

lexicographical_compare()

max()

max_element()

min()

min_element()

mismatch()

8. 集合算法(4)

set_union()        合并2个集合

set_intersection()    取交集

set_difference()       取第一个集合减去第二个集合

set_symmetric_difference()    取只在一个集合中存在的元素集合

9. 堆算法(4)

make_heap()

pop_heap()

push_heap()

sort_heap()

继续阅读