IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++入门——STL常用算法 -> 正文阅读

[C++知识库]C++入门——STL常用算法

参考链接

  1. https://www.bilibili.com/video/BV1et411b73Z?p=243

STL常用算法

  1. 算法主要是由头文件<algorithm> <functional> <numeric>组成

  2. <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等

  3. <numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数

  4. <functional>定义了一些模板类,用以声明函数对象

常用遍历算法

  1. for_each //遍历容器
  2. transform //搬运容器到另一个容器

for_each

功能描述:实现遍历容器

函数原型:

for_each(iterator beg, iterator end, _func);

//beg:开始迭代器
//end:结束迭代器
//_func:函数或函数对象

transform

功能描述:搬运容器到另一个容器中

函数原型:

tansform(iterator beg1, iterator end1, iterator beg2, _func);

//beg1:源容器开始迭代器
//end1:源容器结束迭代器
//beg2:目标容器开始迭代器
//_func:函数或函数对象

搬运的目标容器必须要提前开辟空间,否则无法正常搬运

常用查找算法

  1. find //查找元素
  2. find_if //按条件查找元素
  3. adjacent_find //查找相邻重复元素
  4. binary_search //二分查找法
  5. count //统计元素个数
  6. count_if //按条件统计元素个数

find

功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()

函数原型:

find(iterator beg, iterator end, value);

//beg:开始迭代器
//end:结束迭代器
//value:查找的元素

find_if

功能描述:按条件查找元素

函数原型:

find_if(iterator beg, iterator end, _Pred);

//beg:开始迭代器
//end:结束迭代器
//_Pred函数或者谓词(返回bool类型的仿函数)

adjacent_find

功能描述:查找相邻重复元素

函数原型:

adjacent_find(iterator beg, iterator end);

//查找相邻重复元素,返回相邻元素的第一个位置的迭代器
//beg:开始迭代器
//end:结束迭代器

binary_search

功能描述:查找指定元素是否存在

函数原型:

bool binary_search(iterator beg, iterator end, value);

//查找指定的元素,查到返回true,否则false,在无序序列中不可用
//beg:开始迭代器
//end:结束迭代器
//value:查找的元素

count

功能描述:统计元素个数

函数原型:

count(iterator beg, iterator end, value);

//beg:开始迭代器
//end:结束迭代器
//value:统计的元素

count_if

功能描述:按条件统计元素个数

函数原型:

count_if(iterator beg, iterator end, _Pred);

//beg:开始迭代器
//end:结束迭代器
//_Pred:谓词

常用排序算法

  1. sort //对容器内元素进行排序
  2. random_shuffle //指定范围内的元素随机调整次序
  3. merge //容器元素合并,并存储到另一个容器中
  4. reverse //反转指定范围的元素

sort

功能描述:
对容器内元素进行排序

函数原型:

sort(iterator beg, iterator end, _Pred);

//beg:开始迭代器
//end:结束迭代器
//_Pred:谓词

random_shuffle

功能描述:指定范围内的元素随机调整次序

函数原型:

random_shuffle(iterator beg, iterator end);

//beg:开始迭代器
//end:结束迭代器

使用时记得加随机数种子

#include <ctime>
srand((unsigned int)time(NULL));

merge

功能描述:两个容器合并,并存储到另一容器中

函数原型:

merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);

//注意:两个容器必须是有序的,目标容器需要提前开辟空间
//beg1:容器1开始迭代器
//end1:容器1结束迭代器
//beg2:容器2开始迭代器
//end2:容器2结束迭代器
//dest:目标容器开始迭代器

reverse

功能描述:将容器内元素进行反转

函数原型:

reverse(iterator beg, iterator end);

//beg:开始迭代器
//end:结束迭代器

常用拷贝和替换算法

  1. copy //容器内指定范围的元素拷贝到另一容器中
  2. replace //将容器内指定范围的旧元素修改为新元素
  3. replace_if //容器内指定范围满足条件的元素替换为新元素
  4. swap //互换两个容器的元素

copy

功能描述:容器内指定范围的元素拷贝到另一容器中

函数原型:

copy(iterator beg, iterator end, iterator dest);

//beg:开始迭代器
//end:结束迭代器
//dest:目标迭代器

replace

功能描述:将容器内指定范围的旧元素修改为新元素

函数原型:

replace(iterator beg, iterator end, oldvalue, newvalue);

//beg:开始迭代器
//end:结束迭代器
//oldvalue:旧元素
//newvalue:新元素

replace_if

功能描述:将区间内满足条件的元素,替换成指定元素

函数原型:

replace_if(iterator beg, iterator end, _pred, newvalue);

//beg:开始迭代器
//end:结束迭代器
//_pred:谓词
//newvalue:替换的新元素

swap

功能描述:互换两个容器的元素

函数原型:

swap(container c1, container c2);

//c1:容器1
//c2:容器2

常用算术生成算法

算术生成算法属于小型算法,使用时包含的头文件为#include

  1. accumulate //计算容器元素累积总和
  2. fill //向容器中添加元素

accumulate

功能描述:计算区间内,容器元素累计总和

函数原型:

accumulate(iterator beg, iterator end, value);

//beg:开始迭代器
//end:结束迭代器
//value:起始值

fill

功能描述:向容器中填充指定的元素

函数原型:

fill(iterator beg, iterator end, value)

//beg:开始迭代器
//end:结束迭代器
//value:填充的值

常用集合算法

  1. set_intersection //求两个容器的交集
  2. set_union //求两个容器的并集
  3. set_difference //求两个容器的差集

set_intersection

功能描述:求两个容器的交集

函数原型:

set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);

//返回目标容器的结束迭代器
//注意:两个集合必须是有序序列
//beg1:容器1的开始迭代器
//end1:容器1的结束迭代器
//beg2:容器2的开始迭代器
//end2:容器2的结束迭代器
//dest:目标容器开始迭代器

set_union

功能描述:求两个集合的并集

函数原型:

set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);

//返回目标容器的结束迭代器
//注意:两个集合必须是有序序列
//beg1:容器1的开始迭代器
//end1:容器1的结束迭代器
//beg2:容器2的开始迭代器
//end2:容器2的结束迭代器
//dest:目标容器开始迭代器

set_difference

功能描述:求两个集合的差集

函数原型:

set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);

//返回目标容器的结束迭代器
//注意:两个集合必须是有序序列
//beg1:容器1的开始迭代器
//end1:容器1的结束迭代器
//beg2:容器2的开始迭代器
//end2:容器2的结束迭代器
//dest:目标容器开始迭代器

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 11:41:17  更:2021-08-27 11:42:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:54:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码