我对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)
你是混淆元素和迭代器.迭代器是列表中位置的占位符,它们本身不是元素.要获取元素,您需要取消引用迭代器:
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>
标准头中的函数几乎完全相同.