C++ algorithm函数简介

algorithm编辑

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

编程语言C++

类    别C++标准库

头文件#include <algorithm>

命名空间using namespace std;

目录

1函数

不修改内容的序列操作:

修改内容的序列操作:

划分操作:

排序操作:

二分法查找操作:

集合操作:

堆操作:

最大/最小操作:

1函数

编辑

 

不修改内容的序列操作:

 

adjacent_find 查找两个相邻(Adjacent)的等价(Identical)元素

all_ofC++11 检测在给定范围中是否所有元素都满足给定的条件

any_ofC++11 检测在给定范围中是否存在元素满足给定条件

count 返回值等价于给定值的元素的个数

count_if 返回值满足给定条件的元素的个数

equal 返回两个范围是否相等

find 返回第一个值等价于给定值的元素

find_end 查找范围A中与范围B等价的子范围最后出现的位置

find_first_of 查找范围A中第一个与范围B中任一元素等价的元素的位置

find_if 返回第一个值满足给定条件的元素

find_if_notC++11 返回第一个值不满足给定条件的元素

for_each 对范围中的每个元素调用指定函数

mismatch 返回两个范围中第一个元素不等价的位置

none_ofC++11 检测在给定范围中是否不存在元素满足给定的条件

search 在范围A中查找第一个与范围B等价的子范围的位置

search_n 在给定范围中查找第一个连续n个元素都等价于给定值的子范围的位置

修改内容的序列操作:

 

copy 将一个范围中的元素拷贝到新的位置处

copy_backward 将一个范围中的元素按逆序拷贝到新的位置处

copy_ifC++11 将一个范围中满足给定条件的元素拷贝到新的位置处

copy_nC++11 拷贝 个元素到新的位置处

fill 将一个范围的元素赋值为给定值

fill_n 将某个位置开始的 个元素赋值为给定值

generate 将一个函数的执行结果保存到指定范围的元素中,用于批量赋值范围中的元素

generate_n 将一个函数的执行结果保存到指定位置开始的 个元素中

iter_swap 交换两个迭代器(Iterator)指向的元素

moveC++11 将一个范围中的元素移动到新的位置处

move_backwardC++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 拷贝指定范围的循环移动结果

shuffleC++11 用指定的随机数引擎随机打乱指定范围中的元素的位置

swap 交换两个对象的值

swap_ranges 交换两个范围的元素

transform 对指定范围中的每个元素调用某个函数以改变元素的值

unique 删除指定范围中的所有连续重复元素,仅仅留下每组等值元素中的第一个元素。

unique_copy 拷贝指定范围的唯一化(参考上述的 unique)结果

划分操作:

 

is_partitionedC++11 检测某个范围是否按指定谓词(Predicate)划分过

partition 将某个范围划分为两组

partition_copyC++11 拷贝指定范围的划分结果

partition_pointC++11 返回被划分范围的划分点

stable_partition 稳定划分,两组元素各维持相对顺序

排序操作:

 

is_sortedC++11 检测指定范围是否已排序

is_sorted_untilC++11 返回最大已排序子范围

nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分

partial_sort 部份排序

partial_sort_copy 拷贝部分排序的结果

sort 排序

stable_sort 稳定排序

二分法查找操作:

 

binary_search 判断范围中是否存在值等价于给定值的元素

equal_range 返回范围中值等于给定值的元素组成的子范围

lower_bound 返回指向范围中第一个值大于或等于给定值的元素的迭代器

upper_bound 返回指向范围中第一个值大于给定值的元素的迭代器

集合操作:

 

includes 判断一个集合是否是另一个集合的子集

inplace_merge 就绪合并

merge 合并

set_difference 获得两个集合的差集

set_intersection 获得两个集合的交集

set_symmetric_difference 获得两个集合的对称差

set_union 获得两个集合的并集

堆操作:

 

is_heap 检测给定范围是否满足堆结构

is_heap_untilC++11 检测给定范围中满足堆结构的最大子范围

make_heap 用给定范围构造出一个堆

pop_heap 从一个堆中删除最大的元素

push_heap 向堆中增加一个元素

sort_heap 将满足堆结构的范围排序

最大/最小操作:

 

is_permutationC++11 判断一个序列是否是另一个序列的一种排序

lexicographical_compare 比较两个序列的字典序

max 返回两个元素中值最大的元素

max_element 返回给定范围中值最大的元素

min 返回两个元素中值最小的元素

min_element 返回给定范围中值最小的元素

minmaxC++11 返回两个元素中值最大及最小的元素

minmax_elementC++11 返回给定范围中值最大及最小的元素

next_permutation 返回给定范围中的元素组成的下一个按字典序的排列

prev_permutation 返回给定范围中的元素组成的上一个按字典序的排列

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++标准库中提供了许多常用的算法函数,这些函数可以用于对容器(如vector、list等)中的数据进行排序、查找、遍历等操作。以下是一些常用的C++ algorithm函数: 1. `std::sort`:对容器中的元素进行排序,可以通过自定义比较函数来指定排序方式。 ```cpp std::vector<int> nums = {4, 2, 6, 1, 5}; std::sort(nums.begin(), nums.end()); // 默认升序排序 ``` 2. `std::binary_search`:在已排序的容器中进行二分查找,返回是否找到指定元素。 ```cpp std::vector<int> nums = {1, 2, 3, 4, 5}; bool found = std::binary_search(nums.begin(), nums.end(), 3); // true ``` 3. `std::find`:在容器中查找指定元素,返回第一个匹配元素的迭代器,如果没找到则返回容器末尾的迭代器。 ```cpp std::vector<int> nums = {1, 2, 3, 4, 5}; auto it = std::find(nums.begin(), nums.end(), 3); // 指向元素3的迭代器 ``` 4. `std::count`:统计容器中指定元素的个数。 ```cpp std::vector<int> nums = {1, 2, 2, 3, 2}; int count = std::count(nums.begin(), nums.end(), 2); // 3 ``` 5. `std::accumulate`:计算容器中元素的累加和,可以指定初始值。 ```cpp std::vector<int> nums = {1, 2, 3, 4, 5}; int sum = std::accumulate(nums.begin(), nums.end(), 0); // 15 ``` 6. `std::reverse`:将容器中的元素翻转。 ```cpp std::vector<int> nums = {1, 2, 3, 4, 5}; std::reverse(nums.begin(), nums.end()); // {5, 4, 3, 2, 1} ``` 这些函数只是C++ algorithm库中的一小部分,还有许多其他有用的函数可用于不同的操作。你可以查阅C++标准库文档以获取更详细的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值