STL-常用算法

本文详细介绍了STL中的常用算法,包括遍历容器的for_each和transform,查找元素的find、find_if及二分查找,排序算法如sort和random_shuffle,还有拷贝、替换和算术生成等操作。这些算法是C++编程中提高效率的重要工具,适用于各种容器的操作和数据处理。
摘要由CSDN通过智能技术生成

STL-常用算法

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

常用遍历算法

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

for_each

  • for_each(iterator beg,iterator end,_func)

    ​ 遍历算法,遍历容器元素

​ //_func 函数或者函数对象(仿函数)

transform

  • transform(iterator beg1,iterator end1,iterator beg2,_func)

​ 搬运容器到另一个容器

​ //beg1 源容器开始迭代器

​ //end1 原容器结束迭代器

​ //beg1目标容器开始迭代器

​ //_func 函数或者函数对象(仿函数)

常用的查找算法

  • find //查找元素
  • find_if //按条件查找
  • adjacent_find //查找相邻重复元素
  • binary_search //二分查找法
  • count //统计元素个数
  • count_if //按照条件统计元素个数

find

  • find(iterator beg,iterator end,value)

​ 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器的位置

​ //value 查找的元素

find_if

  • find_if(iterator beg,iterator end,_Pred)

​ 按值查找元素,找到返回指定位置的迭代器,找不到返回结束迭代器位置

​ //_Pred 函数或者谓词

adjacent_find

  • adjacent_find(iterator beg,iterator end)

​ 查找相邻重复元素,返回相邻元素的第一个位置的迭代器

binary_search

  • binary_search(iterator beg,iterator end,value)

​ 查找指定元素,查到返回true 否则false

//注意:在无序序列中不可用

count

  • count(iterator beg,iterator end,value)

​ 统计元素出现次数

count_if

  • count_if(iterator beg,iterator end,_Pred)

​ 按条件统计元素出现次数

​ //_Pred 谓词

常用排序算法

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

sort

  • sort(iterator beg,iterator beg,iterator end,_Pred)

//_pred 谓词

random_shuffle

  • random_shuffle(iterator beg,iterator end);

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

merge

  • merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iteraotor dest)

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

两个容器必须都是有序的

​ //beg1 容器1开始迭代器

​ //end1容器1结束迭代器

​ //beg2 容器1开始迭代器

​ //end2容器1结束迭代器

​ //dest 目标容器开始迭代器

reverse

  • reverse(iterator beg , iterator end)

​ 反转指定范围元素

常用的拷贝和替换算法

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

copy

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

​ 拷贝指定范围的元素到另一容器

​ //dest 目标容器的迭代器

​ //利用copy算法在拷贝时,目标容器记得提前开辟空间

replace

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

​ 将区间内旧元素,替换成新元素

​ //oldvalue 旧元素

​ //newvlaue 新元素

replace_if

  • replace_if(iterator beg,iterator end,_Pred,newvalue)

​ 按条件替换元素,满足条件的替换成指定元素

​ //_Pred 谓词

​ //newvlaue 替换的新元素

swap

  • swap(container c1,container c2)

​ 互换两个容器

​ //c1容器1

​ //c2容器2

常用算术生成算法

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

accumulate

  • accumulate(iterator beg,iterator end,value)

​ 计算容器中元素的总和

​ //value 累加的起始的值

fill

  • fill(iterator beg,iterator end,value)

​ 向容器中添加元素

​ //beg 开始迭代器

​ //end 结束迭代器

​ //value 填充的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奥特神龟3.1.4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值