std :: map的结尾被移位了

时间:2012-08-31 20:48:25

标签: c++ visual-studio-2010 map iterator

  

可能重复:
  discover when the element is inserted to the std::map

我跟踪插入137个元素到地图当我使用VS2010调试器检查地图的大小我确实137.使用printf我打印地图的所有元素

(it = map.begin();it !=map.end();++it) {
   printf ("%x",it->second);
}

结果打印出137个值。 之后我的程序继续执行。在执行结束时,我需要处理地图的值。

我再一次用调试器检查它有137个元素但是当我像以前一样打印所有这些元素时,我打印出138个值,当最后一个是无效值时。

我需要了解它是如何/何时发生以及导致map.end()被转移的原因。

1 个答案:

答案 0 :(得分:0)

没有代码,很难说清楚。我们可以猜到。 我建议您重写添加到地图的运算符,并在每次添加后检查地图的大小。当尺寸> 137导致程序进入GPF(或调用将导致调试程序中断的函数。)在调试器和宾果游戏中运行程序,堆栈跟踪将告诉您问题所在。