我的目标是寻找一个Key(objName),如果它存在则返回值。
GameEntity * GameEntity::FindInContents(string objName)
{
for( map<string, GameEntity*>:: iterator iter = contents.begin(); iter != contents.end(); iter++)
{
if(contents.find(objName)== contents.end())
return (iter->second);
else
return NULL;
}
}
然而,当我运行代码时,它将我带到
/** There is also a templated copy ctor for the @c pair class itself. */
#ifndef __GXX_EXPERIMENTAL_CXX0X__
template<class _U1, class _U2>
pair(const pair<_U1, _U2>& __p)
: first(__p.first), second(__p.second) { }
#else
我不明白这个问题是什么。提前谢谢!
答案 0 :(得分:3)
不需要循环,因为find
返回找到的元素的迭代器或end()
,如果不匹配。
所以你需要的只是:
map<string, GameEntity*>:: iterator iter = contents.find(objName);
if(iter != contents.end()) // notice the !=
return (iter->second);
else
return NULL;
有关详细信息,请参阅http://en.cppreference.com/w/cpp/container/map/find
答案 1 :(得分:0)
为什么世界上你在使用for循环?
试试这个:
NULL
(注意:不推荐使用nullptr
宏,而是使用obtainedList
。)