c++之泛型算法

初识泛型算法

1只读算法

find()
count()
accumulate(vec.cbegin(),vec.cend(),0);
如果对string用accumulate算法,第三个参数不能是const char*因为它没有+操作符。
equal(r1.cbegin(),r1.cend(),r2.cbegin());
用来判断两个序列是否保存相同的值
r2大小需要>=r1;
第二个序列至少与第一个序列一样长

2写容器元素的算法

fill(vec.begin(),vec.end(),0)将每个元素置为0;
向目的位置的迭代器写入数据的算法要求目的位置足够大,能容纳要写入的元素。
back_inserter插入迭代器
创建一个迭代器,作为算法的目的位置来使用

vector<int>vec;
fill_n(back_inserter(vec),10,0);
拷贝算法

copy(v1.begin(),v1.end(),v2.begin());接受3个参数,返回目的位置递增后的值,也就是尾元素之后的位置。
replace(ilst.begin(),ilist.end(),0,42);replace算法接受4个参数:前两个迭代器,表示输入序列,第三个是要搜索的值,第四个是新值,将所有等于第一个值的元素替换为第二个。

3重排算法

sort
标准库算法对迭代器而不是容器进行操作,因此,算法不能直接添加或删除元素。

定制操作

sort算法默认使用<运算符,可以通过改变运算符实现新的排序顺序,需要重载sort函数的默认行为。

向算法传递函数

谓词

sort的第二个版本,接受第三个参数,是一个谓词。
谓词是一个可调用的表达式,返回结果是能用作条件的值。谓词分为一元谓词和二元谓词。

lambda表达式

[capture list] (parameter list)->return type{function body}
捕获列表、返回类型,参数列表,函数体
for_each算法
当混合使用隐式捕获和显式捕获时,捕获列表中第一个元素必须是&或=,指定了默认捕获方式为引用或值。

再探迭代器

泛型算法结构

特定容器算法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值