vector循环删除的时候,erase(it)会返回下一个迭代器的地址,保险的做法是赋值给it 即 it= erase(it) 这是vector的内部机制所造成的,所以对vector
vector循环删除的时候,erase(it)会返回下一个迭代器的地址,保险的做法是赋值给it 即 it= erase(it)
这是vector的内部机制所造成的,所以对vector进行erase的时候特别注意迭代器是否会失效!
map则可以直接erase(it++);
vector和map都不能将it++写在for循环中,而在循环体内erase(it)!
// map的完美删除
map<int, int> m;
m[1] = 1;
m[2] = 2;
m[3] = 4;
m[4] = 3;
m[5] = 5;
m[6] = 6;
cout <<"m size = "<<m.size() <<endl;
map<int, int>::iterator it1;
for(it1 = m.begin(); it1!=m.end();)
{
if(it1->second % 2 == 0)
m.erase(it1++);
else
it1++;
}
cout <<"2的整数倍删除后应该剩下i3";
cout <<"m size = "<<m.size() <<endl;
}
--结束END--
本文标题: vector与map的erase()函数详细解析
本文链接: https://lsjlt.com/news/172789.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0