这个问题卡了好久
网上找到很多都是说由于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 pair
if (this->_Getcont() == 0
|| this->_Getcont() != _Right._Getcont())
{ // report error
_DEBUG_ERROR("vector iterators incompatible");
_SCL_SECURE_INVALID_ARGUMENT;
}
}