c++ - STL <list> 搜索列表以查找项目属性

标签 c++ list stl

我对 STL 的工作原理不是很了解。

我能够创建一个列表并向其中添加项目。

但现在我似乎无法在列表中搜索以找到具有所需属性的元素。

原谅我这方面的无知。我是 STL 的新手,但我仍然难以理解 C++ 的某些元素。

这是代码。我知道它会产生错误,但我想要这样的东西。

提前致谢。

extern list<MonsterClass> Monsters;

MonsterClass FindMonster(int x)
{
     MonsterClass Monster;
     list<MonsterClass>::iterator ListItem;

      for(ListItem = Monsters.begin(); ListItem != Monsters.end(); ++ListItem) 
      {
      if (ListItem.X == x)
         {
           Monster = ListItem;
           return Monster;
         }
      }

   return NULL;
}

最佳答案

您混淆了元素和迭代器。迭代器是列表中位置的占位符,它们不是元素本身。要获取元素,您需要取消引用迭代器:

if ((*ListItem).X == x) // or, easier: if(ListItem->X == x)
   {
     Monster = *ListItem;
     return Monster;
   }
}

此外,您不能返回 NULL因为你的 Monster类不能取值 NULL (这是一个指针)。您可以 做的是返回一个迭代器而不是项目本身。那么你的函数几乎与 std::find 完全一样。来自 <algorithm> 的功能标准标题。

关于c++ - STL <list> 搜索列表以查找项目属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476589/

相关文章:

c++ - 如何使用 C++ 在 Windows 中监视进程调用

c++ - 简单的 C++ 游戏模拟器 - 没有匹配的调用函数

r - 如何从R中的字符串列表中删除元素

python - 如何将列表项的值计数归因于新列 - pandas

c++ - 通过2个字段查找特定对象的 vector 元素

c++ - 如何从指针列表中获取随机指针?

c++ - Posix 线程通信 Linux

c++ - 不断收到 "see declaration of ' 类“错误

python - 列表中元素之间的按位运算

c++ - 为什么这个示例有效?