迭代器介绍
1、迭代器是一种容器,所有标准库容器都可以使用迭代器,但只有少数几种才同时支持下标运算符。
2、string对象不属于容器,但它支持许多与容器类型类似的操作。vector和string对象都支持下标运算符,也都支持迭代器。
3、迭代器对象是容器中的元素或者string对象中的字符。使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素。
4、迭代器有有效和无效之分,这点和指针差不多。有效的迭代器或者指向某个元素,或者指向容器中尾元素的下一位置;其他所有情况都属于无效。
迭代器的使用
标准容器迭代器的运算符:
1、*iter ##返回迭代器iter所指元素的引用
2、iter->mem ##解引用iter并获取该元素名为men的成员,等价于(*iter).men
3、++iter ##另iter指示容器中的下一元素
4、--iter ##另iter指示容器中的上一元素
5、iter1==iter2 ##判断两个迭代器是否相等,如果两个迭代器指示的是同一元素或者它们是同一个容器的尾后迭代器,则相等;反之,不相等
6、iter1 !=iter2
vector和string迭代器支持的运算
iter+n #结果是一个迭代器
iter-n
iter1+=n
iter1-=n
iter1-ter2
>、>=、<、<=
p3.22
string s1(”kadsle jklje ghejwk”);
for (auto it=s1.begin();it<s1.end()&&isspace(*it);it++){
*it=toupper(*it);
}
cout<<s1<<endl;
p3.23
vector<int> i1{1,2,4,5,3,2,6,7,4,9};
for(auto it=i1.begin();it<i1.end();it++){
*it=*it**it;
}
for(int i=0;i<i1.size();i1++)
cout<<i1[i];
p3.24
vector<int> i1{2,3,4,5,4,3,7,12,5};
vector<int> i2;
for(auto it=i1.begin()+1;it<i1.end;it++){
int tmp=(it)+(it-1);
i2.push_back(tmp);
}
for(auto i=0;i<i2.size();i++)
cout<<i2;
vector<int> i1{2,3,4,5,4,3,7,12,5};
vector <int> i2;
auto it=i1.begin();
auto it2=i1.end()-1;
if(i1.size()%2==1){
for( ;it>=it2;it–)
{
i2.push_back((*it)+ ( *it2));
it2++;
}
}else{
for(;it>it2;it–)
i2.push_back((*it)+( *it2));
it2++;
}
for(int i=0;i<i2.size();i++)
cout<<i2[i];
p3.25
vector iv(10,0);
int counter=0;int tmp;
while(counter!=10){
cin>>tmp;
*(iv.begin()+(tmp/10))+=1;
counter++;
}
for(auto i=0;i