C++中map 赋值的问题
代码如下
#include <map>
typedef std::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;
for(Iterator = Map.begin();Iterator!=Map.end();Iterator++)
{
printf("index = %d \n",Iterator->second);
if(Iterator->first == 2)
{
rqinfomap.erase(Iterator);
}
}
}
为什么这样操作会有问题呢
两个map不能做相等操作 rqinfomap = Map;?
[解决办法]
=没有问题,问题在于两个map的迭代器不能共用,所以rqinfomap.erase(Iterator);
应该改为Map;或者将迭代器改为rqinfomap的迭代器。
其次就是erase删除操作会使迭代器失效,所以后边使用迭代器会有问题,可以在删除后将迭代器重新复位Iterator = Map.begin();
[解决办法]
rqinfomap.erase(Iterator);
for(Iterator = Map.begin();Iterator!=Map.end();)
{
if(Iterator->first == 2)
{
Iterator = Map.erase(Iterator);
}
else
{
++Iterator;
}
}