我有两个非常相似的代码; 这个:
std::vector<int> fail{0};
fail.reserve(2);
std::vector<int>::iterator it1 = fail.begin(), it2 = fail.begin() + 1;
fail.push_back(0);
it1 == it2;
Run Code Online (Sandbox Code Playgroud)
抛出"矢量迭代器不兼容"异常,这个:
std::vector<int> fail{0, 0};
fail.reserve(3);
std::vector<int>::iterator it1 = fail.begin(), it2 = fail.begin() + 1;
fail.push_back(0);
it1 == it2;
Run Code Online (Sandbox Code Playgroud)
没有.这似乎是由于it2在第一个例子中是向量的结束而在第二个例子中没有,但我只想得到一个完整的澄清,为什么第一次抛出但第二次没有.
作为参考,我正在使用MSVC.