C++编程必备神器STL——常用算法
2018-03-26 18:17
369 查看
C++编程必备神器STL——常用算法
原创 2017年05月07日 12:24:55标签:C++ /
STL /
常用算法
1034
C++标准函数库中,为我们提供了一个algorithm库,里面包含了十分多的常用算法,下面我来做一个小小的总结
非修改序列操作
adjacent_find 查找两个相邻(Adjacent)的等价(Identical)元素 all_of (C++11) 检测在给定范围中是否所有元素都满足给定的条件 any_of (C++11) 检测在给定范围中是否存在元素满足给定条件 count 返回值等价于给定值的元素的个数 count_if 返回值满足给定条件的元素的个数 equal 返回两个范围是否相等 find 返回第一个值等价于给定值的元素 find_end 查找范围 A 中与范围 B 等价的子范围最后出现的位置 find_first_of 查找范围 A 中第一个与范围 B 中任一元素等价的元素的位置 find_if 返回第一个值满足给定条件的元素 find_if_not (C++11) 返回第一个值不满足给定条件的元素 for_each 对范围中的每个元素调用指定函数 mismatch 返回两个范围中第一个元素不等价的位置 none_of (C++11) 检测在给定范围中是否不存在元素满足给定的条件 search 在范围 A 中查找第一个与范围 B 等价的子范围的位置 search_n 在给定范围中查找第一个连续 n 个元素都等价于给定值的子范围的位置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
修改序列操作
copy 将一个范围中的元素拷贝到新的位置处 copy_backward 将一个范围中的元素按逆序拷贝到新的位置处 copy_if (C++11) 将一个范围中满足给定条件的元素拷贝到新的位置处 copy_n (C++11) 拷贝 n 个元素到新的位置处 fill 将一个范围的元素赋值为给定值 fill_n 将某个位置开始的 n 个元素赋值为给定值 generate 将一个函数的执行结果保存到指定范围的元素中,用于批量赋值范围中的元素 generate_n 将一个函数的执行结果保存到指定位置开始的 n 个元素中 iter_swap 交换两个迭代器(Iterator)指向的元素 move (C++11) 将一个范围中的元素移动到新的位置处 move_backward (C++11) 将一个范围中的元素按逆序移动到新的位置处 random_shuffle 随机打乱指定范围中的元素的位置 remove 将一个范围中值等价于给定值的元素删除 remove_if 将一个范围中值满足给定条件的元素删除 remove_copy 拷贝一个范围的元素,将其中值等价于给定值的元素删除 remove_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素删除 replace 将一个范围中值等价于给定值的元素赋值为新的值 replace_copy 拷贝一个范围的元素,将其中值等价于给定值的元素赋值为新的值 replace_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素赋值为新的值 replace_if 将一个范围中值满足给定条件的元素赋值为新的值 reverse 反转排序指定范围中的元素 reverse_copy 拷贝指定范围的反转排序结果 rotate 循环移动指定范围中的元素 rotate_copy 拷贝指定范围的循环移动结果 shuffle (C++11) 用指定的随机数引擎随机打乱指定范围中的元素的位置 swap 交换两个对象的值 swap_ranges 交换两个范围的元素 transform 对指定范围中的每个元素调用某个函数以改变元素的值 unique 删除指定范围中的所有连续重复元素,仅仅留下每组等值元素中的第一个元素。 unique_copy 拷贝指定范围的唯一化(参考上述的 unique)结果1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
划分
is_partitioned (C++11) 检测某个范围是否按指定谓词(Predicate)划分过 partition 将某个范围划分为两组 partition_copy (C++11) 拷贝指定范围的划分结果 partition_point (C++11) 返回被划分范围的划分点 stable_partition 稳定划分,两组元素各维持相对顺序1
2
3
4
5
6
排序
is_sorted (C++11) 检测指定范围是否已排序 is_sorted_until (C++11) 返回最大已排序子范围 nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分 partial_sort 部份排序 partial_sort_copy 拷贝部分排序的结果 sort 排序(快速排序) stable_sort 稳定排序1
2
3
4
5
6
7
8
二分法查找(用于已划分/已排序的序列)
binary_search 判断范围中是否存在值等价于给定值的元素 equal_range 返回范围中值等于给定值的元素组成的子范围 lower_bound 返回指向范围中第一个值大于或等于给定值的元素的迭代器 upper_bound 返回指向范围中第一个值大于给定值的元素的迭代器1
2
3
4
5
合并(用于已排序的序列)
includes 判断一个集合是否是另一个集合的子集 inplace_merge 就绪合并 merge 合并 set_difference 获得两个集合的差集 set_intersection 获得两个集合的交集 set_symmetric_difference 获得两个集合的对称差 set_union 获得两个集合的并集1
2
3
4
5
6
7
8
堆
is_heap 检测给定范围是否满足堆结构 is_heap_until (C++11) 检测给定范围中满足堆结构的最大子范围 make_heap 用给定范围构造出一个堆 pop_heap 从一个堆中删除最大的元素 push_heap 向堆中增加一个元素 sort_heap 将满足堆结构的范围排序1
2
3
4
5
6
7
最大/最小值
is_permutation (C++11) 判断一个序列是否是另一个序列的一种排序 max 返回两个元素中值最大的元素 max_element 返回给定范围中值最大的元素 min 返回两个元素中值最小的元素 min_element 返回给定范围中值最小的元素 minmax (C++11) 返回两个元素中值最大及最小的元素 minmax_element (C++11) 返回给定范围中值最大及最小的元素1
2
3
4
5
6
7
8
其他
lexicographical_compare 比较两个序列的字典序 next_permutation 返回给定范围中的元素组成的下一个按字典序的排列 prev_permutation 返回给定范围中的元素组成的上一个按字典序的排列
相关文章推荐
- C++编程必备神器STL——常用算法
- STL中的常用算法
- STL常用算法: distance实现,count_if算法实现,bind2nd的使用..
- STL中的常用算法
- STL常用容器算法
- STL的常用算法
- STL学习之十四:常用算法 for_each 和 transform以及adjacent_find的示例代码
- STL知识点(常用算法函数介绍 、容器、类属算法、迭代器、函数对象、适配器、分配器
- 常用算法 stl综合案例
- ACM等算法比赛中JAVA 常用"STL"总结:TreeMap,Queue,PriorityQueue等
- STL常用算法
- 常用STL算法1_遍历
- STL常用算法4----mem_fun
- STL常用算法之排序、集合
- C++编程思想(卷二):STL算法目录
- STL常用算法: max_element,min_element, distance以及手动实现.
- 常用STL容器及算法举例
- STL常用算法(转)
- STL常用算法
- 【STL】<algorithm><numeric><functional> 中的常用算法