当前位置:首页 C++ > 正文

c++vector结构体删除

作者:野牛程序员:2023-07-31 20:40:01 C++阅读 2378

在 C++ 中,要从一个 vector 中删除结构体(或其他元素),可以使用 erase()pop_back() 方法,具体取决于想要删除的元素的位置。

  1. 使用 erase() 方法:

erase() 方法接受一个迭代器参数,它指向 vector 中要删除的元素。可以使用标准库的 remove() 算法来找到要删除的元素,然后再使用 erase() 删除该元素。这个方法适用于需要删除多个匹配元素的情况。

假设有一个 Person 结构体,并且想从 vector 中删除年龄等于 30 的人:

#include <iostream>
#include <vector>
#include <algorithm>

struct Person {
    std::string name;
    int age;
    std::string occupation;
};

int main() {
    std::vector<Person> people = {
        {"John", 25, "Engineer"},
        {"Alice", 30, "Doctor"},
        {"Bob", 22, "Student"},
        {"Eve", 30, "Teacher"}
    };

    // 使用 std::remove_if 和 erase 删除年龄等于 30 的人
    auto newEnd = std::remove_if(people.begin(), people.end(), [](const Person& person) {
        return person.age == 30;
    });

    // 使用 erase 方法擦除多余的元素
    people.erase(newEnd, people.end());

    // 输出剩余的人员信息
    for (const auto& person : people) {
        std::cout << "Name: " << person.name << ", Age: " << person.age << ", Occupation: " << person.occupation << std::endl;
    }

    return 0;
}
  1. 使用 pop_back() 方法:

如果只是想删除 vector 的最后一个元素,可以使用 pop_back() 方法:

#include <iostream>
#include <vector>

struct Person {
    std::string name;
    int age;
    std::string occupation;
};

int main() {
    std::vector<Person> people = {
        {"John", 25, "Engineer"},
        {"Alice", 30, "Doctor"},
        {"Bob", 22, "Student"}
    };

    // 删除最后一个元素
    people.pop_back();

    // 输出剩余的人员信息
    for (const auto& person : people) {
        std::cout << "Name: " << person.name << ", Age: " << person.age << ", Occupation: " << person.occupation << std::endl;
    }

    return 0;
}

无论是使用 erase() 还是 pop_back(),在删除元素后,vector 的大小都会相应地减小。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击