C++ 算法库algorithm

算法(Algorithm)为一个计算的具体步骤,常用于计算、数据处理和自动推理。C++ 算法库(Algorithms library)为 C++ 程序提供了大量可以用来对容器及其它序列进行算法操作的函数。这些组件可以为函数或函数模板,大部份由头文件 <algorithm> 提供,一小部份位于 <numeric><cstdlib> 中。

在涉及范围操作时,需要注意的是:通常 C++ 中提及的范围(如: [first, last))都是半闭半开区间,即第二个迭代器(或指针,本例中为  last)指向的元素是不包含在范围中的。
还可以参考  vector与法算 主题,该主题包含大量的代码示例。 
  • 由头文件 <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 个元素都等价于给定值的子范围的位置
  • 由头文件 <algorithm> 定义。

    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)结果
  • 由头文件 <algorithm> 定义。

    is_partitioned C++11 检测某个范围是否按指定谓词(Predicate)划分过
    partition 将某个范围划分为两组
    partition_copy C++11 拷贝指定范围的划分结果
    partition_point C++11 返回被划分范围的划分点
    stable_partition 稳定划分,两组元素各维持相对顺序
  • 由头文件 <algorithm> 定义。

    is_sorted C++11 检测指定范围是否已排序
    is_sorted_until C++11 返回最大已排序子范围
    nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分
    partial_sort 部份排序
    partial_sort_copy 拷贝部分排序的结果
    sort 排序
    stable_sort 稳定排序
  • 由头文件 <algorithm> 定义。

    binary_search 判断范围中是否存在值等价于给定值的元素
    equal_range 返回范围中值等于给定值的元素组成的子范围
    lower_bound 返回指向范围中第一个值大于或等于给定值的元素的迭代器
    upper_bound 返回指向范围中第一个值大于给定值的元素的迭代器
  • 由头文件 <algorithm> 定义。

    includes 判断一个集合是否是另一个集合的子集
    inplace_merge 就绪合并
    merge 合并
    set_difference 获得两个集合的差集
    set_intersection 获得两个集合的交集
    set_symmetric_difference 获得两个集合的对称差
    set_union 获得两个集合的并集
  • 由头文件 <algorithm> 定义。

    is_heap 检测给定范围是否满足堆结构
    is_heap_until C++11 检测给定范围中满足堆结构的最大子范围
    make_heap 用给定范围构造出一个堆
    pop_heap 从一个堆中删除最大的元素
    push_heap 向堆中增加一个元素
    sort_heap 将满足堆结构的范围排序
  • 由头文件 <algorithm> 定义。

    is_permutation C++11 判断一个序列是否是另一个序列的一种排序
    lexicographical_compare 比较两个序列的字典序
    max 返回两个元素中值最大的元素
    max_element 返回给定范围中值最大的元素
    min 返回两个元素中值最小的元素
    min_element 返回给定范围中值最小的元素
    minmax C++11 返回两个元素中值最大及最小的元素
    minmax_element C++11 返回给定范围中值最大及最小的元素
    next_permutation 返回给定范围中的元素组成的下一个按字典序的排列
    prev_permutation 返回给定范围中的元素组成的上一个按字典序的排列
  • 由头文件 <numeric> 定义。

    accumulate 累加范围中的元素
    adjacent_difference 计算算输出相邻元素的差值
    inner_product 计算两个范围的内积
    iota C++11 用顺序递增的值赋值指定范围内的元素
    partial_sum 部份求和
  • 由头文件 <cstdlib> 定义。

    qsort 快速(Quick)排序
    bsearch 二分(Binary)查找






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值