我必须使用迭代器在矢量中的特定位置上插入元素。 我不能使用insert()函数(我已经明确指示我应该在没有insert()的情况下执行它)。用迭代器插入到矢量中
这是我的代码(或至少其弄乱部分):
cerr << "distance before resize: " << distance(wl.begin(), pos) << endl;
wl.resize(wl.size()+1);
cerr << "distance after resize: " << distance(wl.begin(), pos) << endl;
move_backward(pos, wl.end()-1, wl.end());
(*pos) = temp;
我的输出:
distance before resize: 0
distance after resize: -322
所以apperantly,我调整大小弄乱迭代POS。有想法该怎么解决这个吗?
编辑:你可能想知道我是怎么声明我的迭代器:
auto pos = wl.begin();
'resize'可能会重新分配'vector'的内存。你的'pos'指向原始内存中间的某个地方,它不再存在。相反,存储你想要的位置的指数,并使用它。 – BoBTFish