一个简单的迭代器问题
[解决办法]
push_back后迭代器失效了。可能永远不会到你原先找的end_itr
[解决办法]
因为debug模式下有“越界”检查。
用正规方法使用stl,别瞎试。
[解决办法]
这是个断言错误,这么用本身不会出错,但是这种用法是错误的,所以debug 版会出错。
这是个理论性的错误,就是说,
虽然保留了足够了内存,使用上不会有错;
但是push_back 这个操作,理论上会使iterator 失效,所以end_itr是个失效的iterator ,所以认为这种做法,不符合vector,iterator 设计理念和使用方式,是一种错误的用法,所以调试版绘指出这是个错误;
你这个用法,其实就是一种打擦边球的方式;
假设标准是一种法律的话;
以前(VC6 ,DEVC++),法律执行不严格,就没有判作错误;
现在(vs2008)法律执行严格了,就判作这是一种错误了。
push_back 不是这样用的.
for(int i=0;i<9;i++)
{
push_back(test[i]);//这种用法,似乎才是对的,因为没有使用iterator,
//所以不存在iterator 失效的问题
}