#include <string>
#include<iostream>
#include<vector>
#include<utility>
using namespace std;
int main()
{
vector< pair<string,string>* > *ve = new vector< pair<string,string>* >();
pair<string,string> *p1 = new pair<string,string>("hello","world");
pair<string,string> *p2 = new pair<string,string>("ss","sdf");
ve->push_back(p1);
ve->push_back(p2);
vector< pair<string,string>* >::iterator it = ve->begin();
for(it;it!=ve->end();it++)
{
cout<<(*it)->first<<" "<<(*it)->second<<endl;// 这个地方不能写成*it->first,因为->的优先级比*高
}
cout<<ve->size()<<endl;
for(it = ve->begin();it!=ve->end();it++)
{
delete (*it);
}
ve->clear();
cout<<ve->size()<<endl;
delete ve;
return 0;
}
关于顺序容器的删除问题:
1 erase,pop_front,pop_back 函数使指向被删除元素的所有迭代器失效,对于vector容器,指向删除元素点后面的元素的迭代器通常也会失效,对于deque,如果删除时不包含第一个元素或最后一个元素,那么该deque容器相关的所有迭代器都会失效