重新分配迭代器 [重写]


如何在

STL 向量的某个位置插入?

到目前为止,我已经尝试像这样插入 STL 向量:

someVector.insert(someVector.begin() + location, info);

当我按顺序插入项目时,这有效,但是当我从矢量中删除项目时,我希望能够在该位置插入。但是,迭代器需要重新分配,因为它会引发"矢量迭代器 + 偏移量超出范围"错误。(我对C++迭代器很陌生,所以我不完全确定"迭代器重新分配"是什么,似乎找不到一个好的解释,所以如果你能解释一下,请随意!我可以找到很多问题,询问何时需要重新分配迭代器,但不是这样做的最佳方式。或者,是否有不同/更好的方法插入位置?

向量上的擦除操作返回迭代器,经过刚刚擦除的元素。您可以使用该迭代器作为后续插入位置,以插入擦除的"位置":

auto it = v.begin() + 3;  // say
it = v.erase(it);         // erase and store position
v.insert(it, -3);         // insert at that position

最新更新