C++ 常用迭代器与容器笔记

1.

double price[5]={1,2,3,4,5};
for(double x:price) cout<<x;
//OR
for(auto x:price) cout<<x;

2.

sort(begin,end);//[begin,end)
copy(A.begin,A.end,B.pos);//[A.begin,A.end)->B[pos,...)要求B预先开辟有足够空间
//反向迭代器
vector<int>::reverse_iterator ri;
for(ri=dice.rbegin();ri!=dice.rend();ri++){
	cout<<*ri;
}//ok,简单来说,反向迭代器的" * "被重新定义了,是先--,然后再取值

3.vector,list,deque

在这里插入图片描述

4.数组模板vector,valarray和array

4.1 声明:

vector<double> ved1(10),ved2(10),ved3(10);
array<double,10>vod1,vod2,vod3;
valarray<double>vad1(10),vad2(10),vad3(10);

4.2 容器的运算

#include<valarray>
#include<vector>
#include<algorithm>

//数值计算
transform(ved1.begin(),ved1.end(),ved2.begin(),ved3.begin(),plus<double>());
transform(vod1.begin(),vod1.end(),vod2.begin(),vod3.begin(),plus<double>());
vad3=vad1+vad2;
vad3=vad1*vad2;
transform(ved3.begin(),ved3.end(),ved3.begin(),bind1st(multiplies<double>(),2.5));//将向量ved3中每个元素乘2.5

//valarray迭代器获取
sort(begin(vad1),end(vad1));//valarray需要用特殊的方法来获取迭代器

//判断是否大于某个数
valarray<bool>vbool=vad1>9;

//slice(a,b,c)函数,以a为起始,以c为间隔,创建4个索引
slice(1,4,3)//创建1、4、7、10的索引
vad1[slice(1,4,3)];

4.3 transform函数

transform( Interval1.begin,Interval1.end,result.begin, function);
transform( Interval1.begin,Interval1.end,Interval2.begin,result.begin, function);

在这里插入图片描述
4.4 函数适配器

transform( Interval1.begin,Interval1.end,result.begin, bind1st(multiplies<double>(),2.5));//区间中每个数乘2.5

这里的bind1st(multiplies(),2.5),相当于把2.5绑定到了multiplies(para1,para2)的第一个参数上,生成了一个新函数
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值