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

从std::vector中删除多个对象?

在C++中,std::vector是一个动态数组,提供了多种删除元素的方法。以下是几种常见的删除多个对象的方法:

1. 删除特定值的元素

如果你想删除std::vector中所有等于特定值的元素,可以使用std::remove_if算法结合erase方法。

代码语言:txt
复制
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {1, 2, 3, 2, 4, 2, 5};
    int value_to_remove = 2;

    // 使用std::remove_if和erase删除所有等于value_to_remove的元素
    v.erase(std::remove_if(v.begin(), v.end(), [value_to_remove](int val) { return val == value_to_remove; }), v.end());

    // 输出结果
    for (int val : v) {
        std::cout << val << " ";
    }
    return 0;
}

2. 删除满足特定条件的元素

如果你想删除满足特定条件的元素,可以使用std::remove_if算法结合erase方法,条件可以是一个函数或者lambda表达式。

代码语言:txt
复制
#include <iostream>
#include <vector>
#include <algorithm>

bool is_even(int n) {
    return n % 2 == 0;
}

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    // 删除所有偶数元素
    v.erase(std::remove_if(v.begin(), v.end(), is_even), v.end());

    // 输出结果
    for (int val : v) {
        std::cout << val << " ";
    }
    return 0;
}

3. 删除指定范围的元素

如果你想删除std::vector中指定范围内的元素,可以直接使用erase方法。

代码语言:txt
复制
#include <iostream>
#include <vector>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    // 删除从索引2到索引5的元素(不包括索引5)
    v.erase(v.begin() + 2, v.begin() + 6);

    // 输出结果
    for (int val : v) {
        std::cout << val << " ";
    }
    return 0;
}

4. 删除重复元素

如果你想删除std::vector中的重复元素,可以使用std::unique算法结合erase方法。

代码语言:txt
复制
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {1, 2, 2, 3, 4, 4, 5};

    // 先排序
    std::sort(v.begin(), v.end());

    // 删除重复元素
    v.erase(std::unique(v.begin(), v.end()), v.end());

    // 输出结果
    for (int val : v) {
        std::cout << val << " ";
    }
    return 0;
}

总结

  • 删除特定值的元素:使用std::remove_iferase
  • 删除满足特定条件的元素:使用std::remove_iferase
  • 删除指定范围的元素:直接使用erase
  • 删除重复元素:先排序,然后使用std::uniqueerase

这些方法可以帮助你在std::vector中高效地删除多个对象。

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

相关·内容

领券