mobile wallpaper 1
mobile wallpaper 2
mobile wallpaper 3
mobile wallpaper 4
618 words
2 minutes
常用算法 - CPP ALGORITHM
2026-10-24

STL-常用算法#

概述:#

  • 算法主要是由 组成
  • 是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等
  • 体积很小,只包括几个在序列上面进行简单数学运算的模板函数
  • 定义了一些模板类,用以声明函数对象

常用遍历算法#

学习目标:#

  • 掌握常用遍历算法

算法介绍:

  • for_each //遍历容器
  • transform //搬运容器到另一个容器中

for_each#

功能描述#

  • 实现遍历容器

函数原型#

for_each(iterator beg,iterator end,_func);
//遍历算法 遍历容器元素
//beg开始迭代器
//end结束迭代器
//_func 函数或函数对象

transform#

功能描述#

  • 搬运容器到另一个容器中

函数原型#

transform(iterator beg1,iterator end1,iterator beg2,_func);
//beg1,end1 源容器的迭代器
//beg2 目标容器的起始迭代器
//_func函数或者函数对象,在搬运时动手脚

常用查找算法#

学习目标#

  • 掌握查找算法

算法介绍#

find //查找元素
find_if //按条件查找元素
adjacent_find //查找相邻重复元素
binary_search //二分查找法,查元素是否存在(仅有序序列可查)
count //统计元素个数
count_if //按条件统计元素个数

find#

功能描述#

  • 查找指定元素,返回指定元素迭代器(无返回end)

函数原型#

find(iterator beg,iterator end,value);
//按值查找元素,找到返回指定位置迭代器
//beg 开始迭代器
//end 结束迭代器
//value 查找的元素

find_if#

功能描述#

  • 按条件查找元素

函数原型#

find_if(iterator beg,iterator end,_Pred);
//按值查找元素,找到返回指定迭代器,找不到返回end()
//beg开始迭代器
//end结束迭代器
//_Pred 函数或者谓词

adjacent_find#

功能描述#

  • 查找相邻重复元素

函数原型#

adjacent_find(iterator beg,iterator end);
//查找相邻重复元素,返回相邻元素的第一个位置的迭代器

功能描述#

  • 查找指定元素是否存在

函数原型#

bool binary_search(iterator beg,iterator end,value);
//查找指定元素,查到true,
//注意:在无序序列中不可用

count#

功能描述#

  • 统计元素个数

函数原型#

count<iterator beg,iterator end,val);
//统计元素出现次数

count_if#

功能描述#

  • 按条件统计元素个数

函数原型#

count_if(iterator beg,iterator end,_Pred);

常用排序算法#

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

sort#

功能描述#

  • 对容器内元素进行排序

函数原型#

sort(iterator beg,iterator end ,_Pred);

random_shuffle/shuffle#

WARNING

random_shuffle已于C++14中弃用,C++17中删除,需换为shuffle(C++11引入)

功能描述#

  • 洗牌 指定范围内的元素随机调整次序

函数原型#

random_shuffle(iterator beg,terator end);
shuffle(iterator beg,iterator end,URBG&& g);
//g为满足统一随机生成器(Uniform Random Bit Generator)要求的函数对象

merge#

功能描述#

  • 两个容器元素合并,并存储到另一个容器中

函数原型#

merge(iterator beg1,iterator end1,iterator beg2,iterator end2, iterator dest);
//dest 为目标容器的起始迭代器
WARNING

merge只能用于两个有序容器的合并,合并完后依旧有序

常用拷贝和替换算法#

学习目标:#

  • 掌握常用的拷贝和替换算法

算法简介#

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

copy#

函数原型:#

copy(iterator beg,iterator end,iterator dest);
//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器

replace#

函数原型#

replace(iterator beg,iterator end,oldvalue,newvalue);
//将区间内oldvalue替换为newvalue

replace_if#

函数原型#

replace_if(iterator beg,iterator end,_Pred,newvalue);
//按条件替换

swap#

函数原型#

swap(container c1,container c2);

常用算术生成算法#

学习目标#

  • 掌握常用的算术生成算法
CAUTION

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

算法简介#

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

accumulate#

功能描述#

  • 计算区间内容器元素累计总和

函数原型#

accumulate(iterator beg,iterator end ,value);
//计算容器元素累计总和
//value 起始值

fill#

功能描述#

  • 向容器中填充指定元素

函数原型#

fill(iterator beg,iterator end,value);
//向容器中填充元素
//beg 开始 end 结束
//value 填充值

常用集合算法#

学习目标#

  • 掌握常用集合算法

算法简介#

set_intersection //求交集
set_union //并集
set_difference //差集

set_itersection/set_union/set_difference#

函数原型#

****(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);
IMPORTANT

两个集合必须是有序序列

Video#

Share

If this article helped you, please share it with others!

常用算法 - CPP ALGORITHM
https://www.bilibili.com/video/BV1et411b73Z/?p=243
Author
Memki
Published at
2026-10-24
License
CC BY-NC-SA 4.0

Some information may be outdated

Table of Contents