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

这篇具有很好参考价值的文章主要介绍了【C++】STL 算法概念和分类 ( STL 算法头文件 | STL 算法思想 - 数据与算法分离 | STL 算法 迭代器 | STL 算法 操作对象 | STL 算法分类 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。





一、STL 算法概念



1、STL 算法头文件


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

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

#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 算法分类 : 分为以下四类 ;文章来源地址https://www.toymoban.com/news/detail-811958.html

  • ① 非可变序列算法 : 此类算法 不修改 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 容器中的元素内容进行 数值计算 ;

到了这里,关于【C++】STL 算法概念和分类 ( STL 算法头文件 | STL 算法思想 - 数据与算法分离 | STL 算法 迭代器 | STL 算法 操作对象 | STL 算法分类 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包