const vector<type>v 这个定义等于是废的,因为都不允许指针指向下一个地址,所以是废的。
vector<type>::const_iterator 并不是const与iterator的简单叠加,const_iterator允许指向下一个地址,可以遍历整个容器,但是不允许修改*iter.
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
int a;
vector<int>v;
while(cin>>a){
v.push_back(a);
}
for(vector<int>::size_type i=0;i<v.size();i++){
cout<<v[i]<<" ";
}
cout<<endl;
for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++){
*iter=20;
}
for(vector<int>::iterator iter1=v.begin();iter1!=v.end();iter1++){
cout<<*iter1<<" ";
}
cout<<endl;
return 0;
}
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
int a;
vector<int>v;
while(cin>>a){
v.push_back(a);
}
for(vector<int>::const_iterator iter=v.begin();iter!=v.end();iter++){
*iter=10;
}
for(vector<int>::const_iterator iter1=v.begin();iter1!=v.end();iter1++){
cout<<*iter1<<" ";
}
cout<<endl;
return 0;
}
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
string s;
const vector<string>v;
while(cin>>s){
v.push_back(s); //错误
}
for(vector<string>::iterator iter=v.begin();iter!=v.end();iter++){//错误,不允许改变指针地址
cout<<*iter<<" ";
}
return 0;
}