64,636
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <map>
#include <iostream>
using namespace std;
typedef map<int,int> rqInfo;
int main()
{
rqInfo Map;
Map.insert(rqInfo::value_type(1,10));
Map.insert(rqInfo::value_type(2,20));
Map.insert(rqInfo::value_type(3,30));
rqInfo rqinfomap;
rqinfomap = Map;
rqInfo::iterator Iterator= Map.begin();
rqInfo::iterator Iteratortemp=Iterator;
printf("index=%d\n",Iterator->second);
printf("index=%d\n",Iteratortemp->second);
Map.erase(Iterator);
Iteratortemp++;//此处为什么Iterator失效后,Iteratortemp也跟着失效了呢,莫非是删除此元素的位置之后,所有引用此处的迭代器都会失效,懂的可以讲解一下。
printf("index=%d\n",Iteratortemp->second);
}
rqInfo::iterator Iteratortemp=Iterator;//Iteratortemp是Iterator的拷贝
//....
Map.erase(Iterator);//传递的是Iterator的拷贝
//这里共有迭代器,类似于三个指向同一地址的指针
//因为在erase中,会释放Iterator所指向的内存/资源
//所以所有指向刚被释放的那块地址的迭代器都失效了