我正在开展一项计划,将宠物注册表保存在酒店(家庭作业)。我使用向量来保存结构元素(宠物)。结构的代码是这样的:
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());
}
是否有类似的方法来修改元素?
答案 0 :(得分:1)
使用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
的名称。
对pets
宠物使用变量petList
或pet
代替std::vector
。
答案 1 :(得分:-1)
这是一种方法:
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;
}
}
}