我想push_back
在迭代向量时修改()元素,如下所示:
auto main() -> int {
std::vector<double> v { 1, 2, 3 };
for (auto& num : v) {
std::cout << num << "\n";
v.push_back(num);
}
std::cout << "===========\n";
for (const auto& num : v) {
std::cout << num << "\n";
}
}
输出为:
1
1.00938e-320
0
===========
1
2
3
1
1.00938e-320
0
为什么输出不是这样的:
1
2
3
===========
1
2
3
1
2
3
如果基于的范围只是糖:
for (auto& it{v.begin()}, it != v.end(), it++)
这里不应该有两种可能的情况吗?
v.end()
每次迭代都会进行评估,并且永不结束。这应该是一个无限循环。v.end()
在迭代之前评估一次并且应该按我预期输出:
1
2
3
===========
1
2
3
1
2
3