Использование карты свойств boost :: ассоциативно с интерфейсом boost :: BIMAP

Я не могу реализовать ассоциативный интерфейс карты свойств boost для boost bimap.

У меня есть bimap следующим образом, и я пытаюсь определить карту свойств boost :: ассоциативного для него. Я хочу использовать вспомогательные функции Put и Get для моего bimap .. код выглядит следующим образом:

 typedef boost::bimaps::bimap< vertex_descriptor_t, size_t >       vd_idx_bimap_t;
typedef boost::associative_property_map< vd_idx_bimap_t >         asso_vd_idx_bimap_t;

// define bimap
vd_idx_bimap_t        my_bimap;
asso_vd_idx_bimap_t   my_asso_bimap(my_bimap);

Я получаю ошибку компиляции как

  error: no type named âsecond_typeâ in âboost::bimaps::container_adaptor::container_adaptor<boost::multi_index::detail::ordered_index<boost::m.... goes on long list.

Я знаю, bimaps поддерживаются через карты свойств. увидеть Вот для документации. Просто интересно, как бы я использовал для этого ассоциативную карту свойств … если бы я мог определить левую или правую карту для моей ассоциативной карты свойств, это также было бы хорошо. пожалуйста, предложите.

2

Решение

Вы должны сказать это с какой стороны из BIMAP использовать:

typedef boost::associative_property_map<vd_idx_bimap_t::left_map> asso_vd_idx_bimap_t;
// OR
typedef boost::associative_property_map<vd_idx_bimap_t::right_map> asso_vd_idx_bimap_t;

Итак, посмотри Жить на Колиру

#include <boost/bimap.hpp>
#include <boost/property_map/property_map.hpp>
#include <iostream>

using namespace boost;

int main()
{
typedef int vertex_descriptor_t;
typedef boost::bimaps::bimap< vertex_descriptor_t, size_t > vd_idx_bimap_t;
typedef boost::associative_property_map<vd_idx_bimap_t::left_map>   asso_vd_idx_bimap_t;

// define bimap
vd_idx_bimap_t        my_bimap;
asso_vd_idx_bimap_t   my_asso_bimap(my_bimap.left);
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]