用指针来操作c++ vector 时出现的问题。

2025-03-06 14:25:43
推荐回答(1个)
回答1:


   注意,任何改变容器大小的操作都可能造成以前的迭代器失效。

 

 

 

 

 

 

 

是std中vector的实现机制问题。

vector不像数组那样分配了内存就不再变动了。

你压入新元素之后,std中vector重新分配变量的存储,你的指针地址没变,但是vector不再把原来的数据存在那个位置了。

 

我用vs2008调试了一下你的数据,说明了这一点。   Std我仅仅是拿过来用一下,具体实现机制并不是很了解细节,只是有个大概的假定认为std就应该是那样实现的,所以我的答案并不一定正确,LZ自行斟酌。

 

附:调试截图

 

 

 

我改了一下你的程序,重新调试,就更能说明问题了,调试截图如下: