STL-算法

    技术2022-05-19  26

    1 、不改变操作对象内容的算法

      1.1 线性查找: find; find_if; adjacent_find; find_first_of.

      1.2 子序列匹配: search; find_end; search_n.

      1.3 计算元素个数: count; count_if.

      1.4 遍历元素: for_each.

      1.5 比较两个Ranges: equal; mismatch; lexicographical_compare.

      1.6 最大值与最小值: min; max; min_element; max_element.

     

    2、 改变操作对象内容的算法

      2.1 复制区间: copy; copy_backward.

      2.2 互换元素: swap; iter_swap; swap_ranges.

      2.3 transform

      2.4 替换元素: replace; replace_if; replace_copy; replace_if.

      2.5 填充整个区间: fill; fill_n; generate; generate_n.

      2.6 移除元素: remove; remove_if; remove_copy; remove_copy_if; unique; unique_copy.

      2.7 排列算法: reverse; revers_copy; rotate; rotate_copy; next_permutation; prev_permutation.

      2.8 分割: partition; stable_partition.

      2.9 随机重排与抽样: random_shuffle; random_sample; random_sample_n.

      2.10 数值算法: accumulate; inner_product; partial_sum.

     

    3 、排序和查找

      3.1 排序: sort; stable_sort; partial_sort; partial_sort_copy; nth_element; is_sorted.

      3.2 二分查找: binary_search; lower_bound; upper_bound; equal_range.

      3.3 合并: merge; inplace_merge.

      3.4 已排序区间的集合操作: includes; set_union; set_intersection; set_difference; set_symmetric_difference.

      3.5 堆操作: make_heap; push_heap; pop_heap; sort_heap; is_heap.

     

     

    非修改性序列操作  12 个)

    循环

    for_each()

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

    查找

    find()

    在序列中找出某个值的第一次出现的位置

    find_if()

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

    find_end()

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

    find_first_of()

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

    adjacent_find()

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

    计数

    count()

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

    count_if()

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

    比较

    mismatch()

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

    equal()

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

    搜索

    search()

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

    search_n()

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

     

    修改性序列操作  27 个)

    复制

    copy()

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

    copy_backward()

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

    交换

    swap()

    交换两个元素

    swap_ranges()

    交换指定范围的元素

    iter_swap()

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

    变换

    transform()

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

    替换

    replace()

    用一个给定值替换一些值

    replace_if()

    替换满足谓词的一些元素

    replace_copy()

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

    replace_copy_if()

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

    填充

    fill()

    用一给定值取代所有元素

    fill_n()

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

    生成

    generate()

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

    generate_n()

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

    删除

    remove()

    删除具有给定值的元素

    remove_if()

    删除满足谓词的元素

    remove_copy()

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

    remove_copy_if()

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

    唯一

    unique()

    删除相邻的重复元素

    unique_copy()

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

    反转

    reverse()

    反转元素的次序

    reverse_copy()

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

    环移

    rotate()

    循环移动元素

    rotate_copy()

    复制序列时循环移动元素

    随机

    random_shuffle()

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

    划分

    partition()

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

    stable_partition()

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

     

    序列排序及相关操作  27 个)

    排序

    sort()

    以很好的平均效率排序

    stable_sort()

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

    partial_sort()

    将序列的前一部分排好序

    partial_sort_copy()

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

     n 个元素

    nth_element()

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

    二分检索

    lower_bound()

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

    upper_bound()

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

    equal_range()

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

    binary_search()

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

    归并

    merge()

    归并两个有序序列

    inplace_merge()

    归并两个接续的有序序列

    有序结构上的集合操作

    includes()

    一序列为另一序列的子序列时为真

    set_union()

    构造两个集合的有序并集

    set_intersection()

    构造两个集合的有序交集

    set_difference()

    构造两个集合的有序差集

    set_symmetric_difference()

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

    堆操作

    push_heap()

    向堆中加入元素

    pop_heap()

    从堆中弹出元素

    make_heap()

    从序列构造堆

    sort_heap()

    给堆排序

    最大和最小

    min()

    两个值中较小的

    max()

    两个值中较大的

    min_element()

    序列中的最小元素

    max_element()

    序列中的最大元素

    词典比较

    lexicographical_compare()

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

    排列生成器

    next_permutation()

    按字典序的下一个排列

    prev_permutation()

     

    按字典序的前一个排列


    最新回复(0)