Я не могу реализовать ассоциативный интерфейс карты свойств 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 поддерживаются через карты свойств. увидеть Вот для документации. Просто интересно, как бы я использовал для этого ассоциативную карту свойств … если бы я мог определить левую или правую карту для моей ассоциативной карты свойств, это также было бы хорошо. пожалуйста, предложите.
Вы должны сказать это с какой стороны из 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);
}
Других решений пока нет …