小编Gus*_*yan的帖子

使用std :: vector迭代器和调整大小/保留的奇怪/有趣的行为

我有两个非常相似的代码; 这个:

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.

c++ iterator vector

3
推荐指数
1
解决办法
55
查看次数

标签 统计

c++ ×1

iterator ×1

vector ×1