为什么这个迭代器比较失败
Why does this iterator comparison fail?
请参阅以下代码:
if((pos = find()) != _sym.end())
{
// do stuff
}
pos
是std::vector<T>::const_iterator
类型的作用域变量,其中T
是包含一对相同类型迭代器的pod结构体。
_sym
是std::vector<T>
类型的私有类成员变量。
示例代码在Visual Studio 2013下抛出运行时断言错误,消息为Expression: vector iterators incompatible
。错误发生在<vector>
的第240行。
另一方面,如果我重写代码:
pos = find();
if(pos != _sym.end()) // do stuff
然后,迪斯科。
我很确定,比较一个初始化的迭代器(比如end()
)和一个未初始化的迭代器会导致这个断言;我不明白的是,当执行比较运算符时,pos
是否/如何不被认为处于初始化状态。
这可能是相关的
为什么我得到"矢量迭代器不兼容"?
我不认为find() changes _sym.end()?
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++ TCP 服务器比较字符串失败
- SuperLu和LaPack的比较在与犰狳进行基准测试时失败
- 标准::元组成员逐个成员比较失败
- C 拖拖与原始角色的比较失败
- 假定相同的字符串之间的比较失败' == '比较
- 断言在与 opencv 的像素比较中失败
- Gtest在零附近的C++浮点比较失败
- 使用比较函数对引用类型失败
- 从txt文件中读取行后字符串比较失败
- 使用下标运算符进行Integer Vector元素比较失败,但使用at函数成功
- 矢量比较失败
- 字符串比较失败-C++
- 逻辑比较在不应该C++时失败
- 比较测试失败:unorder_map上的[]操作符产生的参数数量错误
- 字符串比较在c++中失败
- 比较具有相同持续时间的两个std::chrono::time_points失败
- 为什么我在double和c++之间的比较失败
- 字符串==字符串比较失败的原因
- 为什么这个迭代器比较失败