【发布时间】:2019-10-29 17:18:45
【问题描述】:
一个二维向量:(我想通过向量,如果找到与“and”相同的名称,则删除或擦除它,但是为什么它只能与it1而不是it2一起使用?如何修复它? )
vector<Animals>numberOfAnimals(12);
vector<vector<Animals>>all(4,numberOfAnimals);
void delete_item(vector<vector<Animals>>&all,string ans)
{
for (auto it1=all.begin();it1!=all.end();it1++)
{
for (auto it2=(*it1).begin();it2!=(*it1).end();it2++)
{
if ((*it2).getter_name()==ans)
{
all.erase(it1); //no error
all.erase(it2--); //error
}
}
}
}
【问题讨论】:
-
运算符
->可以代替(*it).。例如it1->end()而不是(*it1).end()。 -
it1是all的迭代器,它是vector<vector<Animals>>类型,其中it2是vector<Animals>的迭代器;你想做it1->erase(it2) -
vector<Animals>可能不是你想的那样。该向量中的每个元素都包含 oneAnimals。Animals的定义是怎样的?