c++ - STL链表::如何访问成员?

标签 c++ list stl iterator

如果我有一个包含指向类的指针的 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

http://en.cppreference.com/w/cpp/container/list/remove

关于c++ - STL链表::如何访问成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877423/

相关文章:

c++ - 使用模板的条件 typedef 的更清洁替代方案

c# - 如何解决这个 :Struct In Collection not changed

c++ - 具有自定义比较函数对象的 STL 映射

c++ - 在 C++ 中将元素添加到 vector 之前是否需要检查容量?

C++ 将一个 vector append 到另一个 vector

c++ - Qt,库函数调用给出 Unresolved external symbol 错误

c++ - 出于排序的目的,原子读-修改-写是一种操作还是两种操作?

c++ - 顶点着色器中的 Direct3D11 错误顶点变换

java - 创建泛型类型的 Java 列表

r - 在R列表中的每个元素中添加新值?