前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】STL 算法概念和分类 ( STL 算法头文件 | STL 算法思想 - 数据与算法分离 | STL 算法 迭代器 | STL 算法 操作对象 | STL 算法分类 )

【C++】STL 算法概念和分类 ( STL 算法头文件 | STL 算法思想 - 数据与算法分离 | STL 算法 迭代器 | STL 算法 操作对象 | STL 算法分类 )

作者头像
韩曙亮
发布2024-01-13 09:59:21
2060
发布2024-01-13 09:59:21
举报
文章被收录于专栏:韩曙亮的移动开发专栏
文章目录
  • 一、STL 算法概念
    • 1、STL 算法头文件
    • 2、STL 算法思想 - 数据与算法分离
    • 3、STL 算法 迭代器
    • 4、STL 算法 操作对象
  • 二、STL 算法分类

一、STL 算法概念


1、STL 算法头文件

标准模板库 STL 算法 都定义在 <algorithm> , <numeric> 和 <functional> 三个头文件中 ;

使用 STL 标准模板库 算法时 , 导入上述 3 个头文件 , 导入时根据需求导入即可 , 不必都导入 ;

代码语言:javascript
复制
#include <algorithm>
#include <numeric>
#include <functional>
  • <algorithm> 头文件 是 3 个 STL 算法头文件中 包含算法最多的一个 , 包含常用的 : 比较算法、交换算法、查找算法、遍历算法、复制算法、修改算法、反转算法、排序算法、合并算法 等 算法 ;
  • <numeric> 头文件 包含的算法较少 , 这些算法 主要是 在 序列 上面进行简单数学运算 的模板函数 , 如 : 在 序列 上 执行 加减乘除 操作 ;
  • <functional> 头文件 中 只 定义了一些模板类 , 这些模板类的作用是 声明函数对象 ;

STL 标准模板库 提供了 实现算法 的 模板函数 , 借助这些 模板函数 , 只需要几行代码 , 即可实现相应算法的复杂功能 , 极大地提升了开发效率 和 程序的可维护性 ;

2、STL 算法思想 - 数据与算法分离

STL 算法 的 核心思想是 将 算法 和 数据结构 分离 , 使得 算法 可以 独立于 数据结构 进行操作 ;

由于 STL 算法 都是 模板函数 , 算法 不直接操作 具体的数据类型 , 也就是说 STL 算法 可以 作用于 各种不同的 数据结构 , STL 算法的使用 提高了代码的 复用性 和 可维护性 ;

3、STL 算法 迭代器

STL 算法 通常 通过 迭代器 来 操作容器中的元素 ;

迭代器 类似于指针 , 指向容器中的元素 , 可以通过 * 解引用操作符 获取 迭代器指向的元素 ;

迭代器 可以用来 遍历容器中的元素 , 并对元素进行读写访问操作 ;

STL 容器 基本都定义了其本身所 专用的迭代器 , 用以访问容器中的元素 ;

4、STL 算法 操作对象

STL 算法 操作对象 是 " STL 容器中的元素 " , 所有的 STL 算法 , 操作 容器元素时 , 会将 STL 容器中的 内容 复制一份 , 对 容器中元素的 副本 进行操作 , 之后再将副本返回 ;

二、STL 算法分类


STL 算法分类 : 分为以下四类 ;

  • ① 非可变序列算法 : 此类算法 不修改 STL 容器中的元素内容 , 如 : 搜索 / 计数 / 比较 操作 ;
    • 搜索算法 : search 查找子序列、find 查找元素、find_if 查找符合要求的元素、find_first_of 查找第一个符合要求的元素 ;
    • 计数算法 : count 统计元素、count_if 统计符合条件的元素 ;
    • 比较算法 : equal 等于、mismatch 不匹配元素、lexicographical_compare 字典序比较 ;
  • ② 可变序列算法 : 此类算法 可修改 STL 容器中的元素内容 , 如 : 插入 / 删除 / 替换 操作 ;
    • 删除算法 : remove 删除元素、remove_if 条件删除元素、remove_copy ;
    • 修改算法 : for_each 遍历修改、transform 变换 ;
    • 排序算法 : sort 排序、stable_sort 稳定排序、partial_sort 部分排序 ;
  • ③ 排序算法 : 对 STL 容器中的元素 进行 的 排序算法 / 合并算法 / 二分查找算法 以及 有序序列的集合容器 上的 算法 ;
  • ④ 数值算法 : 对 STL 容器中的元素内容进行 数值计算 ;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、STL 算法概念
    • 1、STL 算法头文件
      • 2、STL 算法思想 - 数据与算法分离
        • 3、STL 算法 迭代器
          • 4、STL 算法 操作对象
          • 二、STL 算法分类
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档