Week16-C++基础7(STL常用算法集合)

STL常用算法集合
1、常用遍历算法
①for_each()
@param beg 开始迭代器
@param end 结束迭代器
@param _callback 函数回调或者函数对象
@return 函数对象
示例:for_each(v.begin(), v.end(), myPrint01());

②、 for_each有返回值
示例:myPrint02 print2 = for_each(v.begin(), v.end(), myPrint02());

③、for_each可以绑定参数进行输出
示例:for_each(v.begin(), v.end(), bind2nd(myPrint03(), 10000));

④、transform算法 将指定容器区间元素搬运到另一容器中
(注意 : transform 不会给目标容器分配内存,所以需要我们提前分配好内存)
@param beg1 源容器开始迭代器
@param end1 源容器结束迭代器
@param beg2 目标容器开始迭代器
@param _cakkback 回调函数或者函数对象
@return 返回目标容器迭代器
示例:transform(v.begin(), v.end(), vTarget.begin(), TransForm());

⑤、transform 第二种用法 将两个容器数据相加搬运到目标容器
示例:transform(v1.begin(), v1.end(), v2.begin(), vTarget.begin(), TransForm2());

2、常用查找算法
①、find算法 查找元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value 查找的元素
@return 返回查找元素的位置
示例:vector::iterator pos = find(v.begin(), v.end(), 5);

②、利用find查找自定义数据类型
示例:vector::iterator pos = find(v.begin(), v.end(), p2);

③、adjacent_find算法 查找相邻重复元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param _callback 回调函数或者谓词(返回bool类型的函数对象)
@return 返回相邻元素的第一个位置的迭代器
示例:vector::iterator pos = adjacent_find(v.begin(), v.end());

④、binary_search算法 二分查找法
注意: 在无序序列中不可用
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value 查找的元素
@return bool 查找返回true 否则false
示例:bool ret = binary_search(v.begin(), v.end(), 4);

⑤、count算法 统计元素出现次数
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value回调函数或者谓词(返回bool类型的函数对象)
@return int返回元素个数
示例:int num = count(v.begin(), v.end(), 4);

⑥、count_if算法 统计元素出现次数
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param callback 回调函数或者谓词(返回bool类型的函数对象)
@return int返回元素个数
示例:num = count_if(v.begin(), v.end(), GreaterThenFour());

3、常用排序算法
①merge算法 容器元素合并,并存储到另一容器中 这两个容器 必须也是有序的
@param beg1 容器1开始迭代器
@param end1 容器1结束迭代器
@param beg2 容器2开始迭代器
@param end2 容器2结束迭代器
@param dest 目标容器开始迭代器
示例:merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());

②、sort算法 容器元素排序
注意:两个容器必须是有序的
@param beg 容器1开始迭代器
@param end 容器1结束迭代器
@param _callback 回调函数或者谓词(返回bool类型的函数对象)
示例:sort(v1.begin(), v1.end(), greater());

③、random_shuffle(iterator beg, iterator end) 洗牌
示例:random_shuffle(v.begin(), v.end());

④、reverse(iterator beg, iterator end)
示例:reverse(v.begin(), v.end());

4、常用拷贝和替换算法
①、copy算法 将容器内指定范围的元素拷贝到另一容器中
/*
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param dest 目标起始迭代器
示例:copy(v.begin(), v.end(), vTarget.begin());

②、replace算法 将容器内指定范围的旧元素修改为新元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param oldvalue 旧元素
@param oldvalue 新元素
示例:replace(v.begin(), v.end(), 3, 300);

③、replace_if算法 将容器内指定范围满足条件的元素替换为新元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param callback函数回调或者谓词(返回Bool类型的函数对象)
@param oldvalue 新元素
示例:replace_if(v.begin(), v.end(), MyCompare(), 30000);

④、swap算法 互换两个容器的元素
@param c1容器1
@param c2容器2
示例:swap(v1, v2);

5、常用算术生成算法
①accumulate算法 计算容器元素累计总和
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value累加值
示例:int sum = accumulate(v.begin(), v.end(), 0);

②fill算法 向容器中添加元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value t填充元素
示例:fill(v.begin(), v.end(), 1000);

欢迎关注技术公众号,获取更多软件学习干货!
在这里插入图片描述

我们能为你提供什么?
技术辅导:C++、Java、嵌入式软件/硬件
项目辅导:软件/硬件项目、大厂实训项目
就业辅导:就业全流程辅导、技术创业支持
对接企业HR:培养输送优质性人才

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值