如何从vector中移除struct元素

How to remove a struct element from a vector?

本文关键字:struct 元素 vector      更新时间:2023-10-16

我是一个新手程序员,我正在编写一个程序,该程序保存酒店宠物的注册表(我们在课堂上看到的一些愚蠢的练习,没关系)。我使用向量来保存结构元素(宠物)。结构体的代码如下:

struct Pets{
string Name;
string Race;
string Owner;
int Tel;
}p;

请求用户输入的函数是:

AddPet(vector<Pets> &vtnew)
{
Pets newpet;
cout << "Enter the pet's name: " << endl;
cin >> newpet.Name;
cout << "Enter the pet's race: " << endl;
cin >> newpet.Race;
cout << "Enter the owner's name: " << endl;
cin >> newpet.Owner;
cout << "Enter the owner's telephone number: " << endl;
cin >> newpet.Tel;
vtnew.push_back(newpet);
}

好的,现在我需要创建一个函数,通过输入名字或其他东西来删除宠物。有什么办法吗?

vector是一个未排序的容器,所以简单的解决方案实际上是您唯一的选择。

void RemovePet(std::vector<Pet> & pets, std::string name) {
    pets.erase(
        std::remove_if(pets.begin(), pets.end(), [&](Pet const & pet) {
            return pet.Name == name;
        }),
        pets.end());
}

这就是所谓的Erase-remove习语。

注意,这将删除所有与该名称匹配的宠物,而不仅仅是一个。