注意,任何改变容器大小的操作都可能造成以前的迭代器失效。
是std中vector的实现机制问题。
vector不像数组那样分配了内存就不再变动了。
你压入新元素之后,std中vector重新分配变量的存储,你的指针地址没变,但是vector不再把原来的数据存在那个位置了。
我用vs2008调试了一下你的数据,说明了这一点。 Std我仅仅是拿过来用一下,具体实现机制并不是很了解细节,只是有个大概的假定认为std就应该是那样实现的,所以我的答案并不一定正确,LZ自行斟酌。
附:调试截图
我改了一下你的程序,重新调试,就更能说明问题了,调试截图如下: