使用 boost::asociative 属性映射和 boost::BIMAP 接口

Using boost::associative property map with boost::BIMAP interface

本文关键字:boost BIMAP 接口 属性 asociative 使用 映射      更新时间:2023-10-16

我无法为提升双映射实现提升的关联属性映射接口。

有一个如下所示的bimap,我尝试为它定义一个boost::asociative 属性map。我想为我的双映射使用"放置"和"获取"帮助程序函数。代码如下:

 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,那也没问题。请建议。

你需要告诉它使用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);
}