STL Map выдает ошибку при поиске - PullRequest
1 голос
/ 17 декабря 2011

Я пытаюсь создать карту, полную строк в виде ключей и целых чисел в качестве значений. Проблема начинается, когда я пытаюсь найти ее. Может кто-нибудь сказать мне, где я ошибся? У меня две Карты в одном и том же утверждении?

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

    if( roomlist[roomno].rinventory.find( invale ) != map<string, int>::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)'    

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 17 декабря 2011

Попробуйте изменить его на:

if( roomlist[roomno].rinventory.find( invale ) != roomlist[roomno].rinventory.end());
0 голосов
/ 17 декабря 2011

map::end() метод не является статическим.

Правильный способ выглядит следующим образом:

map<string, int>::iterator it = roomlist[roomno].rinventory.find( invale );
if( it != roomlist[roomno].rinventory.end())
  // do stuff
0 голосов
/ 17 декабря 2011

должно быть

if( roomlist[roomno].rinventory.find( invale ) != roomlist[roomno].rinventory.end());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...