本文主要是介绍vector iterators incompatible,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个问题卡了好久
网上找到很多都是说由于erase操作后,没有修改it就继续循环,在与end()比较时,断言出现:
VectorType::iterator it = someVector.begin();
for (; it != someVector.end();)
{if (*it== value){someVector.erase(it);}else{++it;}
}
但是,我的代码中并未调用erase;后来跟踪调试发现原来是由于初始化时将vector变量memset为0才导致的。
vector内部出错位置:
void _Compat(const _Myiter& _Right) const{ // test for compatible iterator pairif (this->_Getcont() == 0|| this->_Getcont() != _Right._Getcont()){ // report error_DEBUG_ERROR("vector iterators incompatible");_SCL_SECURE_INVALID_ARGUMENT;}}
这篇关于vector iterators incompatible的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!