c++ - 从 std::vector 中的特定索引中删除

标签 c++ vector

<分区>

假设我有一个包含 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/

相关文章:

c++ - 包含从 mysql row[x] 构建的固定长度数组的 vector

c++ - 如何解决警告/usr/bin/ld : warning: libtiff. so.4,需要/home/user/libs/opencv/lib/libopencv_highgui.so,可能与libtiff.so.5冲突?

python - 将 stdint 与 swig 和 numpy.i 一起使用

c++ - OpenGL着色器输入

c++ - 在 C++ 中绘图

c++ - C++ 中的释放(指针 vector 数组)

c++ - 格式化 C++ 控制台输出

c++ - 巨大的 std::vector<std::vector> 不会在销毁时释放所有内存

r - 如何从 rep() 函数返回的向量创建矩阵?

c++ - 在 C++ 头文件中声明 vector