首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在保留原始顺序的同时擦除/删除多个std :: vector元素的最有效方法?

在保留原始顺序的同时擦除/删除多个std::vector元素的最有效方法是使用erase-remove惯用法。该方法结合了erase和remove两个函数,可以高效地删除指定元素。

具体步骤如下:

  1. 首先,使用std::remove函数将要删除的元素移动到vector的末尾,并返回一个迭代器指向新的逻辑末尾。
  2. 然后,使用vector的erase函数删除从新的逻辑末尾到原始末尾的所有元素。

以下是示例代码:

代码语言:cpp
复制
#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)

产品介绍链接地址:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券