首页
学习
活动
专区
工具
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中高效地删除多个对象。

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

相关·内容

6分1秒

77_尚硅谷_大数据SpringMVC_从ServletContext中获取SpringIOC容器对象的方式.avi

11分1秒

day11_项目二与面向对象(中)/18-尚硅谷-Java语言基础-项目二:CustomerView删除客户功能的实现

11分1秒

day11_项目二与面向对象(中)/18-尚硅谷-Java语言基础-项目二:CustomerView删除客户功能的实现

11分1秒

day11_项目二与面向对象(中)/18-尚硅谷-Java语言基础-项目二:CustomerView删除客户功能的实现

10分40秒

面试官角度谈如何聊面向对象思想

4分26秒

068.go切片删除元素

7分18秒

这些游戏,真的能帮助你学编程!

1分51秒

Ranorex Studio简介

2时1分

平台月活4亿,用户总量超10亿:多个爆款小游戏背后的技术本质是什么?

7分16秒

050_如何删除变量_del_delete_variable

371
5分27秒

03多维度架构之会话数

14分30秒

Percona pt-archiver重构版--大表数据归档工具

领券