如果我有一个包含指向类的指针的 STL 列表,并且想要访问类成员,我该怎么做?具体来说,我需要能够删除列表中的成员,每个成员都有一个具有唯一 ID 的成员。
所以我有这样的东西:
class Actor{
private:
int id;
public:
int getActorID(){ return id;};
};
std::list<Actor *> actorList;
std::list<Actor *>::iterator i;
如果每个 Actor 都有一个唯一的 ID,我怎样才能删除具有特定 ID 的 Actor 呢?我一直在使用手工编码的链表,但我想将其切换到 STL。唯一的问题是我不知道如何访问方法 getActorID() 来查找要删除的节点。感谢您的帮助。
最佳答案
std::list<Actor *>::iterator it;
std::list<Actor *>::iterator iStart = actorList.begin() ;
std::list<Actor *>::iterator iEnd = actorList.end() ;
for (it=iStart ;it!=iEnd;++it)
{
if (*it->getActorId() == searchedId)
{
actorList.erase(it);
break; //you have unique id's so you could delete a maximum 1 item
}
}
也不要忘记您还有其他选择
std::list::remove
std::list::remove_if
关于c++ - STL链表::如何访问成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877423/