C++ back_inserter

插入迭代器是一种向容器中添加元素的迭代器。

back_inserter 它定义在头文件 interator 中的一个函数。

它接受一个指向容器的引用,返回一个与该容器绑定的插入迭代器。

vector <int> vec ; //空容量
auto it = back_inserter(vec);//向容器中添加元素,它会调用 
*it = 99;//容器中现在有一个元素为 99 

我直接向空容量的容器插入元素就不会出问题了:

vector <int> vec ; //空容量
//正确的,因为 back_inserter 创建一个插入迭代器,用来向容器中添加元素
fill_n(back_inserter(vec),10,99);//向容器中添加 10 个元素值为99

拷贝算法:

vector <int> vec ; //空容量
//正确的,因为 back_inserter 创建一个插入迭代器,用来向容器中添加元素
fill_n(back_inserter(vec),10,99);//向容器中添加 10 个元素值为99
vector <int> vec1(15) ;//这里要提前定好足够的空间去存放元素否则会出错
copy(cbegin(vec),cend(vec),begin(vec1));//第三个不能是 cbegin 因为需要改变元素

前两个参数表示一个输入范围,第三个表示目的位置的起始位置。

replace(vec1.begin(),vec1.end(),0,100);//搜索序列中 是 0 的元素并且替换为第为 100
  replace_copy(vec1.begin(),vec1.end(),back_inserter(vec),99,55);

这个版本不会改变原来序列的值,调用它后 vec1 并未改变, vec 包含了 vec1 的一份拷贝,但是原来 vec1 中的 99 都变为了 55 。

排序算法:sort 

   sort(vec.begin(),vec.end());

它的两个参数接受一个范围,并排序指定范围内的数据,默认从小到大。

unique算法:

它的作用是将序列中的重复元素消除并不是删除。

    vector<string> st1 ={"the","van","the","fsd","sy"};//里面有重复的元素
    sort(st1.begin(),st1.end());//对元素进行排序
     unique(st1.begin(),st1.end());//消除重复的元素

消除重复的元素后,容器的空间大小没有改变,它只是消除了重复的元素,但它的位置还在,只是是一个不确定的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

syhk

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

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

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

打赏作者

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

抵扣说明:

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

余额充值