我想使用insert函数和迭代器更改具有指定大小的向量的值。
当我开始调试时,Visual Studio会向我显示以下消息:
Vector iterator not incrementable
我已经读过这是在向量上使用insert
的结果的一部分。
vector<int> myvector(10,1);
vector<int>::iterator it;
for (it = myvector.begin(); it != myvector.end(); it++)
myvector.insert(it, 2);
是否有其他方法可以追求最初的目的?
答案 0 :(得分:0)
我不太清楚为什么Visual Studio会给出这个令人困惑的消息。但是,这里的实际问题是insert会使迭代器失效 - 因此在插入任何内容后都无法使用它。正确的做法是:
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec(10, 1);
std::vector<int>::iterator it = vec.begin();
for (; it != vec.end(); ) {
it = vec.insert(it, 2);
it += 2;
}
for (it = vec.begin(); it != vec.end(); ++it)
std::cout << "!: " << *it << "\n";
}