值得注意的地方有以下几点:
1. iterator 一旦指向某个vector,
那么这个iterator 的范围只能在 [begin(),end()]之间.
如果超过了这个区间 (即使没有取到 it当前的值,只要 it本身超过了这个区间),
就会在运行时报错.
测试见第2段代码.
#include<iostream>
#include<string>
#include<vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
int main()
{
vector<int> vecInt(10,3);
cout << "Before modify:\n" << endl;
for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
{
cout << *it << endl;
}
for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
{
*it = *it*2;
}
cout << "After modify:\n" << endl;
for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
{
cout << *it << endl;
}
return 0;
}
#include<iostream>
#include<string>
#include<vector>using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;int main()
{
vector<int> vecInt(10,3); cout << "Before modify:\n" << endl;
for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
{
cout << *it << endl;
} for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
{
*it = *it*2;
} cout << "After modify:\n" << endl;
for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
{
cout << *it << endl;
} vector<int>::iterator it = vecInt.begin();
it -= 1; // here it mast be in [begin(),end()], -=1 will error (cause < begin()) if( it==vecInt.end())
{
cout <<" == "<<endl;
} return 0;
}