【发布时间】:2017-05-22 23:21:58
【问题描述】:
假设我有以下课程
class Human
{
public:
Human();
Human(string,int);
virtual ~Human();
string getName();
protected:
private:
string name;
int staj;
};
我创建了包含 2 个我推入的元素的列表
list<Human> mylist;
Human x ("Mike",13);
Human y("pavlek",33);
如果有名为“Mike”的元素,我正在尝试删除,我尝试像这样删除它:
for(list<Human>::iterator it=mylist.begin();it!=mylist.end();++it)
{
if(it->getName()=="Mike")
{
mylist.remove(it);
cout<< "removed";
cout<<it->getName();
}
}
但是,在将值传递给 remove() 函数时出现错误,我应该传递什么才能从列表中删除此元素?
【问题讨论】:
-
考虑使用
<algorithm>和erase-remove_if成语:stackoverflow.com/questions/39019806/… 但如果你不这样做,那么至少缓存你的end()迭代器! ;-) 或者,这个答案显示了使用<algorithm>仅删除第一个匹配元素的更好方法,如果这就是您所需要的:stackoverflow.com/questions/14737780/…
标签: c++