C++ STL映射在尝试搜索时引发错误

C++ STL映射在尝试搜索时引发错误,c++,string,stl,maps,C++,String,Stl,Maps,我试图创建一个映射,其中字符串作为键,整数作为值。当我尝试用它搜索时,问题就开始了。有人能告诉我哪里出了问题吗?是不是我在同一个语句中有两张地图 invale is "ale" roomno = 2; // roomlist is a map // rinventory is another map if( roomlist[roomno].rinventory.find( invale ) != map<string, int>::end(

我试图创建一个映射,其中字符串作为键,整数作为值。当我尝试用它搜索时,问题就开始了。有人能告诉我哪里出了问题吗?是不是我在同一个语句中有两张地图

    invale is "ale"
    roomno = 2;
    // roomlist is a map
    // rinventory is another map

    if( roomlist[roomno].rinventory.find( invale ) != map<string, int>::end());
invale是“ale”
房间号=2;
//房间列表是一张地图
//rinventory是另一张地图
if(roomlist[roomno].rinventory.find(invale)!=map::end());
我得到的错误如下。什么重载函数?这确实是一个漫长的错误

error C2668: 'std::_Tree<_Traits>::end' : ambiguous call to overloaded function
1>        with
1>        [
1>            _Traits=std::_Tmap_traits<std::string,int,std::less<std::string>,std::allocator<std::pair<const std::string,int>>,false>
1>        ]
1>        c:\program files\microsoft visual studio 9.0\vc\include\xtree(569): could be 'std::_Tree<_Traits>::const_iterator std::_Tree<_Traits>::end(void) const'
1>        with
1>        [
1>            _Traits=std::_Tmap_traits<std::string,int,std::less<std::string>,std::allocator<std::pair<const std::string,int>>,false>
1>        ]
1>        c:\program files\microsoft visual studio 9.0\vc\include\xtree(564): or       'std::_Tree<_Traits>::iterator std::_Tree<_Traits>::end(void)'
1>        with
1>        [
1>            _Traits=std::_Tmap_traits<std::string,int,std::less<std::string>,std::allocator<std::pair<const std::string,int>>,false>
1>        ]
1>        while trying to match the argument list '(void)'    
错误C2668:'std::Tree::end':对重载函数的调用不明确
1> 与
1>        [
1> _Traits=std:_Tmap_Traits
1>        ]
1> c:\program files\microsoft visual studio 9.0\vc\include\xtree(569):可以是“std::\u Tree::const\u迭代器std::\u Tree::end(void)const”
1> 与
1>        [
1> _Traits=std:_Tmap_Traits
1>        ]
1> c:\ProgramFiles\microsoft visual studio 9.0\vc\include\xtree(564):或“std::_Tree::iterator std::_Tree::end(void)”命令
1> 与
1>        [
1> _Traits=std:_Tmap_Traits
1>        ]
1> 尝试匹配参数列表“(void)”时
提前谢谢你。

应该是

if( roomlist[roomno].rinventory.find( invale ) != roomlist[roomno].rinventory.end());
if( roomlist[roomno].rinventory.find( invale ) != roomlist[roomno].rinventory.end());
map::end()
方法不是静态的

正确的方法如下:

map<string, int>::iterator it = roomlist[roomno].rinventory.find( invale );
if( it != roomlist[roomno].rinventory.end())
  // do stuff
map::iterator it=roomlist[roomno].rinventory.find(invale);
if(it!=roomlist[roomno].rinventory.end()
//做事
尝试将其更改为: