我应该使用boost :: property_map吗?

car*_*ett 4 c++ boost-graph

(对于标题道歉,我无法想出一个短于140个字符的好文章......)

我正在为boost :: graph库编写一个图算法.在我的算法中,我需要保留关于节点的变量,权重和计数器.就文档和查看其他人的代码而言,执行此操作的典型方法是将这些属性直接附加到图形并使用属性映射访问它们.

但是,在库函数中,我不希望将特定的读/写映射与图形捆绑在一起,因此我创建了自己的外部属性映射.但这些需要一个std::map(或等效的),所以我最终创建了a std::map和a boost::associative_property_map<std::map>.关于这一点的好处是我有一个统一的方法来获取我的算法的属性和用户的属性(boost::get),但在不利方面,我似乎有两个冗余的地图.除了提到的均匀性之外,这样做有什么意义吗?我可以以某种方式让属性映射维护它自己的内部映射(我意识到内存中没有增益等,但是会有一个更少的成员变量来跟踪每个属性)?

Ben*_*oît 5

概括地说,创建一个映射m和关联属性映射pm使用m,你会不会产生冗余.更多信息如下.

boost::associative_property_map不会创建新地图.它只引用另一个地图,并通过boost property_map API(get&put)访问它.

请参阅此处记录的示例.

如果您去查看associative_property_map的构造函数,您将看到它引用了一个容器并将其地址存储为指针(m_c).在这里查找并搜索文件"associative_property_map".