迭代器介紹
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