ошибка при использовании find() в карте ассоциативных свойств повышения в графике BOOST

Я хочу реализовать шаблонную функцию ifexists(), которая проверяет, существует ли ключ на карте или нет.

Если это std::map‹ > , я могу использовать функцию find() в шаблоне и, следовательно, могу реализовать функцию ifexists() моего шаблона. (ниже)

Но я использую Boost::associative_property_map, который ссылается на мой std::map. Я могу использовать функции get и put на этой ассоциативной карте свойств.

std::map< int, int > mymap;
boost::associative_property_map< std::map< int, int > > asso_map ( mymap );

//asso_map stores reference to mymap. and i can use get and put functions on this associative map.

Теперь, если я передам этот asso_map в свою функцию шаблона " ifexists( asso_map, key) ", она выдаст мне следующую ошибку:

error: âclass boost::associative_property_map<std::map<int, int > >â has no member named âendâ
error: âclass boost::associative_property_map<std::map<int, int > >â has no member named âfindâ

Вот мой код функции шаблона:

template <typename map_t, typename key_t>
bool exists_in(map_t map, key_t key)  
{  
  return map.find(key) != map.end();
}

//function call:--> v is int.
if( exists_in ( asso_map, v) ) ... Error (above) 
if( exists_in ( mymap, v) ) ... Correct 

Ошибка в том, что это не функция-член, поскольку «найти» верна, и после просмотра документации здесь видно, что у него нет такой функции-члена, как find().

Однако, если я передам фактическую карту (например, mymap) в функцию шаблона, она сработает. Но я не хочу этого делать, потому что тогда нет смысла использовать ассоциативную карту свойств повышения.

Я хотел найти способ, где я мог бы использовать find() для моей associative_property_map asso_map. Я знаю, что могу перебрать assoc_map и найти выход. но интересно, могу ли я как-то использовать find()

Я надеюсь, что это более ясно. Извините за двусмысленность.


person Pogo    schedule 03.02.2014    source источник
comment
В чем вопрос? Из вашего сообщения ничего не понятно. Более того, ваш код смешивает код C++ и комментарии, которые на самом деле не отформатированы как комментарии C++. Не могли бы вы отредактировать свой вопрос, чтобы решить эти две проблемы?   -  person lrineau    schedule 03.02.2014
comment
Привет, я обновил вопрос. Я надеюсь, что теперь это более ясно.   -  person Pogo    schedule 03.02.2014


Ответы (1)