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

Gre*_*row 2 c++ stl list

我对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;
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*lph 7

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

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

此外,您无法返回,NULL因为您的Monster类不能获取值NULL(这是一个指针).你可以做的是返回一个迭代器而不是项本​​身.然后,您的std::find函数与<algorithm>标准头中的函数几乎完全相同.