#include<iostream> #include<vector> #include<algorithm> //for_each using namespace std; int main() { vector<int> iVec; iVec.reserve(10); for(int i=1;i<8;i++) { iVec.push_back(i); } vector<int>::iterator iter=find(iVec.begin(),iVec.end(),3); //指向3 cout<<*iter<<endl; iVec.erase(iVec.begin(),iVec.begin()+3); //数据增加或删除导致的数据迁移,元素次序发生变化 cout<<*iter<<endl; iVec.insert(iVec.begin(),99); cout<<*iter<<":"<<&(*iter)<<endl; for(int i=1;i<10;i++) //空间扩展导致整个容器迁移,所有的iterator失效 iVec.push_back(i*100); cout<<*iter<<":"<<&(*iter)<<endl; //和上面输出相同,是因为之前的vector还没有释放 for_each(iVec.begin(),iVec.end(), //使用for_each() algorithm 和 lamda expression 输出整个vector [](int i){cout<< i << ‘,‘;}); return 0; //总的来说是iterator指向的地址不会改变,变化的是值 }
时间: 2024-11-06 10:48:06