vector iterators incompatible

来源:互联网 发布:北京装修公司 知乎 编辑:程序博客网 时间:2024/05/16 00:33

这个问题卡了好久

网上找到很多都是说由于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;            }        }


0 0
原创粉丝点击