1
我有一些事情是这样的代码:的std ::地图::擦除和迭代器
map<int, string> m;
m[1] = "a";
m[2] = "b";
m[3] = "a";
m[4] = "a";
m[5] = "e";
m[6] = "f";
m[7] = "g";
m[8] = "h";
m[9] = "i";
for (it1 = src.begin(); it1 != src.end(); ++it1) {
for (it2 = it1; it2 != src.end(); ++it2) {
if (it2 == it1) {
continue;
}
if (it2->second == it1->second) {
fprintf(stderr, "%u\n", it2->first);
src.erase(it2);
}
}
}
我用map
,因为元素并不总是按上述顺序(1,2 ...)
因此,这里的问题
在地图值的某些情况下,该代码打印此
2
3
4
6
7
8
9
5
它是如何可能的(跳过5
),如果地图按容器顺序排序1,2 ...等等?
-1没有提供一个完整的程序来演示问题。请将您的示例程序简化为**完整**,**最小**程序,以显示问题。一个*完整*程序是我们可以复制粘贴到文件并按原样编译的程序。一个*最小*程序没有与问题无关的代码。有关为什么这很重要的原因,请参阅http://sscce.org。 –