[杂谈] 3.#include algorithm 用法用途
发布日期:2021-05-12 23:13:40 浏览次数:21 分类:精选文章

本文共 2233 字,大约阅读时间需要 7 分钟。

包括

头文件为 C/C++ 程序提供了丰富的算法函数,便于开发者快速调用。尽管大多数非简单算法可以使用这个头文件中的函数实现,但仍需了解其内部机制以确保最佳性能。以下是该头文件中常用操作的分类及简要说明:

一、非修改性操作

  • 逐个操作

    在序列中依次执行操作,如遍历每个元素。

    • for_each()
  • 查找操作

    根据条件查找特定元素或位置。

    • find(): 查找值的第一次出现位置。
    • find_if(): 查找满足谓词的第一个元素。
    • find_end(): 查找值最后一次出现位置。
    • find_first_of(): 在序列中找到特定值集的第一次出现。
    • adjacent_find(): 查找相邻元素的对应关系。
  • 计数操作

    统计序列中特定值的出现次数。

    • count(): 统计某个值出现的次数。
    • count_if(): 统计满足谓词的元素数量。
  • 比较操作

    对比序列中的元素。

    • mismatch(): 找到两个序列中的第一个不匹配元素。
    • equal(): 检查两个序列是否对应相等。
  • 二、修改性操作

  • 复制操作

    将序列元素复制到另一个序列。

    • 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(): 复制序列并循环移动。
    1. 随机操作
      随机处理序列。
      • random_shuffle(): 按一定随机方式混洗序列。
      1. 划分操作
        将满足条件的元素放在序列前面。
        • partition(): 根据条件划分顺序。
        • stable_partition(): 保持原顺序划分。

        三、排序及相关操作

      2. 排序操作

        • sort(): 平均效率排序。
        • stable_sort(): 保持相等元素顺序排序。
      3. 前置排序

        • partial_sort(): 对前 n 个元素排序。
        • partial_sort_copy(): 复制序列并前置排序。
      4. 定位操作

        • nth_element(): 找到第 n 个元素的位置。
      5. 二分查找操作

        • lower_bound(): 找到大于等于某值的第一个位置。
        • upper_bound(): 找到大于某值的第一个位置。
        • equal_range(): 找到某值的连续范围。
        • binary_search(): 在已排序序列中是否存在指定值。
      6. 归并操作

        • merge(): 归并两个有序序列。
        • inplace_merge(): 在原序列上归并。
      7. 四、有序集合操作

      8. 集合操作
        • includes(): 检查一个序列是否为另一个的子序列。
        • set_union(): 构造两个集合的并集。
        • set_intersection(): 构造两个集合的交集。
        • set_difference(): 构造两个集合的差集。
        • set_symmetric_difference(): 构造两个集合的对称差集。
      9. 五、堆操作

      10. 堆管理
        • push_heap(): 将元素推入堆。
        • pop_heap(): 从堆顶弹出元素。
        • make_heap(): 将序列构造为堆。
        • sort_heap(): 对堆进行排序。
      11. 六、最大和最小操作

      12. 单值操作

        • min(): 两个值中的较小值。
        • max(): 两个值中的较大值。
      13. 序列操作

        • min_element(): 找到序列中的最小值。
        • max_element(): 找到序列中的最大值。
      14. 七、词典比较

      15. 词典序操作
        • lexicographical_compare(): 比较两个序列的词典序。
      16. 八、排列生成器

      17. 排列操作
        • next_permutation(): 生成下一个字典序排列。
        • prev_permutation(): 生成上一个字典序排列。
      18. 通过合理运用

        头文件中的函数,可以显著提升代码效率和可读性。建议在实际开发中灵活运用这些功能,并根据需求选择最优算法。

    上一篇:[数学建模] 3. 葡萄酒的评价
    下一篇:[每日一题] 1.组队竞赛---编程题(贪心、排序)

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年05月09日 09时45分19秒