我跟踪插入137个元素到地图当我使用VS2010调试器检查地图的大小我确实137.使用printf我打印地图的所有元素
(it = map.begin();it !=map.end();++it) {
printf ("%x",it->second);
}
结果打印出137个值。 之后我的程序继续执行。在执行结束时,我需要处理地图的值。
我再一次用调试器检查它有137个元素但是当我像以前一样打印所有这些元素时,我打印出138个值,当最后一个是无效值时。
我需要了解它是如何/何时发生以及导致map.end()
被转移的原因。
答案 0 :(得分:0)
没有代码,很难说清楚。我们可以猜到。 我建议您重写添加到地图的运算符,并在每次添加后检查地图的大小。当尺寸> 137导致程序进入GPF(或调用将导致调试程序中断的函数。)在调试器和宾果游戏中运行程序,堆栈跟踪将告诉您问题所在。