如何修改vector中的struct元素
How to modify a struct element in 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);
}
好了,现在我需要创建一个函数,通过输入名称来修改宠物。我有一个删除宠物的函数,它是这样的:
void RemovePet(vector<Pets> &pet, std::string nombre){
pet.erase(
std::remove_if(pet.begin(), pet.end(), [&](Pets const & pet) {
return pet.Name == name;
}),
pet.end());
}
是否有类似的方法来修改元素?
使用std::find_if
auto iter = std::find_if(pet.begin(), pet.end(),
[&](Pets const & pet) {return pet.Name == name;});
if ( iter != pet.end() )
{
// Modify the object
}
建议的代码改进。
用
Pet
代替Pets
作为struct
的名称宠物的
std::vector
使用pets
或petList
变量代替pet
这是一种方法:
void ModifyPet(vector<Pets> &pet, std::string name, std::string new_name) {
vector<Pets>::iterator it;
for (it = pet.begin(); it != pet.end(); it++)
{
if (it->Name == name)
{
it->Name = new_name;
break;
}
}
}
相关文章:
- C++ std::vector 中的虚拟析构函数继承
- 当我从 std::vector 中的新放置调用析构函数时会发生什么?
- 查找 std::vector 中的最小值和最大值 std::p air
- C++ std::vector 中的外部类(定义格式不正确)
- 如何非常快速地将数字添加到 Vector 中的一系列元素中
- 如何安全地擦除 std::vector 中的元素
- 如何从 Pyhon 端对存储在 std::vector 中的对象进行持久更改,作为 std::shared_ptr
- Pushing_back std::vector 中的值,不带辅助变量
- 就地合并,类似于 std::vector 中的元素
- 使用运算符重载添加存储在 vector 中的类对象
- 使用 boost zlib 从 std::vector 中的文件中读取压缩的 zraw 数据
- 释放 std::vector 中的内存
- 如何将 std::vector 中的元素移动 1
- 访问 vector 中的子结构体值
- std::list 和 std::vector 中的堆栈溢出异常
- 尝试读取包含 ints 并存储在 int vector 中的文件,但我不断收到错误"Segmentation fault (core dumped)"
- 自动检查 std::vector 中的边界
- shared_ptr在std :: vector中的重新征用无效
- 使用 std::find 查找从二进制文件中读取的字符并转换为 std::vector 中的 std::string<string> 会产生这种不可预测的行为?
- 使用std::vector中的函数erase