C++ 常用函数汇总#include<algorithm>

目录

前言

一、非修改序列操作(12个)

二、修改序列操作(27个)

三、序列排序及相关操作(27个)

总结


前言

#include <algorithm>是C++的标准模版库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模板函数。

具体包括:非修改序列操作、修改序列操作、分区操作、排序操作、二分查找操作、合并操作、堆操作、最大最小值操作、其它操作

本文详细记录该库中函数的使用方法及常用函数的解释


一、非修改序列操作(12个

1.for_each()

对序列中的每个元素执行某操作

for_each(v1.begin(),v1.end(),add);//将v1执行add方法

2.find()

在序列中找出某个值的第一次出现的位置。利用底层元素的等于操作符,对范围内的元素与输入的值进行比较。当匹配时,结束搜索,返回该元素的一个InputIterator

find(v1.begin(),v1.end(),value);//在v1中找到value的索引值

3.find_if()

在序列中找出符合某谓词的第一个元素

4.find_end()

在序列中找出一子序列的最后一次出现的位置

5.find_first_of()

在序列中找出第一次出现指定值集中之值的位置

6.adjacent_find()

在序列中找出相邻的一对值

7.count()

在序列中统计某个值出现的次数

count(v1.begin(),v1.end(),value);//统计v1中value出现的次数

8.count_if()

在序列中统计与某谓词匹配的次数

9.mismatch()

比较:找出两个序列相异的第一个元素

10.equal()

两个序列中的对应元素都相同时为真

11.search()

在序列中找出一子序列的第一次出现的位置

12.search_n()

在序列中找出一值的连续n次出现的位置

二、修改序列操作(27个

1.copy()

从序列的第一个元素起进行复制

copy (v1.begin(),v1.end(),v2.begin());//v1复制给v2

2.copy_backward()

从序列的最后一个元素起进行复制

3.swap()

交换两个元素

swap(a,b);//交换ab

4.swap_ranges()

交换指定范围的元素

5.iter_swap()

交换由迭代器所指的两个元素

6.transform()

将某操作应用于指定范围的每个元素

transform(v1.begin(),v1.end(),v2.begin(),add);//将v1复制到v2同时先执行add方法 将其改变后放入v2容器中

7.replace()

用一个给定值替换一些值

replace(v1.begin(),v1.end(),old_value,new_value);//在v1中找old_value,并用new_value替换

8.replace_if()

替换满足谓词的一些元素

9.replace_copy()

复制序列时用一给定值替换元素

10.replace_copy_if()

复制序列时替换满足谓词的元素

11.fill()

用一给定值取代所有元素

fill(v1.begin(),v1.end(),value);//遍历v1,value替换所遍历的值

12.fill_n()

用一给定值取代前n个元素

13.generate()

用一操作的结果取代所有元素

14.generate_n()

用一操作的结果取代前n个元素

15.remove()

删除具有给定值的元素

remove(v1.begin(),v1.end(),value);//删除v1中所有值为value的数据

16.remove_if()

删除满足谓词的元素

17.remove_copy()

复制序列时删除具有给定值的元素

18.remove_copy_if()

复制序列时删除满足谓词的元素

19.unique()

删除相邻的重复元素

vector<int> ModuleArr;
sort(ModuleArr.begin(), ModuleArr.end());//排序
ModuleArr.erase(unique(ModuleArr.begin(), ModuleArr.end()), ModuleArr.end());//去重

20.unique_copy()

复制序列时删除相邻的重复元素

21.reverse()

反转元素的次序

reserve(v1.begin(),v1.end());//反转v1次序

22.reverse_copy()

复制序列时反转元素的次序

23.rotate()

循环移动元素

24.rotate_copy()

复制序列时循环移动元素

25.random_shuffle()

随机:采用均匀分布来随机移动元素

26.partition()

划分:将满足某谓词的元素都放到前面

27.stable_partition()

将满足某谓词的元素都放到前面并维持原顺序

三、序列排序及相关操作(27个

1.sort()

以很好的平均效率排序

sort(v1.begin(), v1.end());//v1排序

2.stable_sort()

排序:并维持相同元素的原有顺序

3.partial_sort()

将序列的前一部分排好序

4.partial_sort_copy()

复制的同时将序列的前一部分排好序

5.nth_element()

第n个元素  将第n各元素放到它的正确位置

6.lower_bound()

找到大于等于某值的第一次出现

7.upper_bound()

找到大于某值的第一次出现

8.equal_range()

找到(在不破坏顺序的前提下)可插入给定值的最大范围

9.binary_search()

在有序序列中确定给定元素是否存在

10.merge()

归并两个有序序列

merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());//合并v1和v2到v3

11.inplace_merge()

归并两个接续的有序序列

12.includes()

有序结构上的集合操作:一序列为另一序列的子序列时为真

13.set_union()

构造两个集合的有序并集

14.set_intersection()

构造两个集合的有序交集

15.set_difference()

构造两个集合的有序差集

16.set_symmetric_difference()

构造两个集合的有序对称差集(并-交)

17.push_heap()

向堆中加入元素

18.pop_heap()

从堆中弹出元素

19.make_heap()

从序列构造堆

20.sort_heap()

给堆排序

21.min()

两个值中较小的

min(a,b);

22.max()

两个值中较大的

max(a,b);

23.min_element()

序列中的最小元素

max_element(first,end,cmp);//第三个参数cmp可写可不写,max_element()和min_element() 默认是从小到大排列

24.max_element()

序列中的最大元素

min_element(first,end,cmp)

25.lexicographical_compare()

两个序列按字典序的第一个在前

26.next_permutation()

按字典序的下一个排列

27.prev_permutation()

按字典序的前一个排列


总结

本文总结了algorithm库中模板函数方法,并对常用函数方法进行详细使用介绍。

猜你喜欢

转载自blog.csdn.net/Gary_ghw/article/details/131659203