在保留原始顺序的同时擦除/删除多个std::vector元素的最有效方法是使用erase-remove惯用法。该方法结合了erase和remove两个函数,可以高效地删除指定元素。
具体步骤如下:
以下是示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 要删除的元素
std::vector<int> toRemove = {2, 4, 6, 8};
// 使用erase-remove惯用法删除元素
vec.erase(std::remove_if(vec.begin(), vec.end(), [&](int i) {
return std::find(toRemove.begin(), toRemove.end(), i) != toRemove.end();
}), vec.end());
// 输出结果
for (const auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
该方法的优势在于只需遍历vector一次,且保持了原始顺序。适用场景包括需要删除多个元素且保持原始顺序的情况,例如从一个包含大量数据的vector中删除指定元素。
推荐的腾讯云相关产品:腾讯云对象存储(COS)
领取专属 10元无门槛券
手把手带您无忧上云