如何从vector中移除struct元素
How to remove a struct element from a vector?
我是一个新手程序员,我正在编写一个程序,该程序保存酒店宠物的注册表(我们在课堂上看到的一些愚蠢的练习,没关系)。我使用向量来保存结构元素(宠物)。结构体的代码如下:
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习语。
注意,这将删除所有与该名称匹配的宠物,而不仅仅是一个。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- C++如何通过用户输入删除列表元素
- 删除和更新矢量<struct>中的特定元素
- 元素 std::vector <struct>的更有成效的段落
- C 在结构数组中为每个元素(struct)分配堆内存
- 在struct构建的向量中添加元素
- 在向量上找到第一对元素 (int) 并得到第二对元素 (struct)
- c++中使用memset初始化具有不同值的struct数组元素
- 给struct数组中的元素赋值时出错
- 如何修改vector中的struct元素
- 如何从vector中移除struct元素
- 为什么编译器忽略模板类中的struct元素?
- c++中删除struct数组中的元素
- 在vector的每个struct元素中重置值的最快方法