<分区>
假设我有一个包含 5 个元素的 std::vector,我需要从索引 1 和 3 中删除元素,这是最快的方法。标准库中是否有任何辅助方法可以为我做这件事?
<分区>
假设我有一个包含 5 个元素的 std::vector,我需要从索引 1 和 3 中删除元素,这是最快的方法。标准库中是否有任何辅助方法可以为我做这件事?
最佳答案
您可以使用erase
功能。对于这个特定的案例,你提到了这样的事情:
myvector.erase (myvector.begin()+3);
myvector.erase (myvector.begin()+1);
会成功的。您必须为 erase
函数提供一个迭代器,我建议您阅读其使用文档。以上应该适用于您的情况。请注意,每次调用 erase 都会更改删除位置后剩余元素的索引,因为内部数组元素将相对于删除的项目进行调整。
作为对您的评论的回应,您一次只能删除一个元素,除非它们是连续的索引,在这种情况下,您可以使用基于范围的删除版本并采用开始和结束迭代器。 例如,如果你想删除索引 1,2 和 3 使用
myvector.erase (myvector.begin()+1,myvector.begin()+4);
正如我已经提到的,在你删除的项目之后的项目索引将相应地降低。这是不可避免的,因为数组中不能有“间隙”。
关于c++ - 从 std::vector 中的特定索引中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20582519/