C++ :泛型算法

本文详细介绍了C++ STL中的多种算法,包括只读算法如find、accumulate和equal等,以及写算法如fill、copy和replace等,并探讨了sort算法及如何通过自定义比较函数来定制排序行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只读算法


1.find

2.accumulate

string sum = accumulate(v.begin(),v.end(),string(""));

只读算法最好使用v.cbegi,v.cend,不用改变容器的值。

3.equal

equal(roster1.cbegin(), roster1.cend(), roster2.cbegin())

基于假设:第二个序列至少和第一个序列范围一样长。 不一定非要begin到end,可以自己设置范围。

写算法


1. fill

fill(vec.begin(),vec.begin()+vec.size()/2,10);

这些算法的第二个元素都是不包括该元素 (结合.end()的说明即可知道,这样才是合理的)

fill_n(vec.begin(),vec.size(),0);

区别就是fill_n的第二个参数从迭代器变成了数字,代表将从第一个参数指向的元素起的几个元素改写为第三个参数。

2.copy

std::vector<int> a = { 2,3,4 };
std::vector<int> b = { 7,8,9 };
copy(a.begin(), a.end(), b.end()-1);

将前两个参数确定出的范围替换到第三个参数开始的位置。 注意是替换

3.replace

replace(vec.begin(),vec.end(),0,42);

查找前两个参数划出的范围中的第三个参数,替换为第四个参数。

排序算法

1.sort

sort(v.begin(),v.end())

比如string,会以字典顺序排序

定制操作

可以自己定义比较大小的函数操作,重载掉默认的。

bool isShorter(const string &s1, const string &s2)
{
  return s1.size()<s2.size();
}

sort(words.begin(),words.end(),isShorter);

相当于用自定义函数isShorter代替了<,“真”的结果就是sort的准则。

stable_sort则是在比较结果相同时,维持原先顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值