(对于标题道歉,我无法想出一个短于140个字符的好文章......)
我正在为boost :: graph库编写一个图算法。在我的算法中,我需要保留关于节点的变量,权重和计数器。就文档和查看其他人的代码而言,执行此操作的典型方法是将这些属性直接附加到图形并使用属性映射访问它们。
但是,在库函数中,我不希望将特定的读/写映射与图形捆绑在一起,因此我创建了自己的外部属性映射。但这些需要std::map
(或等效),因此我最终创建了std::map
和boost::associative_property_map<std::map>
。关于这一点的好处是我有一个统一的方法来获取我的算法的属性和用户的属性(boost::get
),但在不利方面,我似乎有两个冗余的地图。除了提到的均匀性之外,这样做有什么意义吗?我可以以某种方式让属性映射维护它自己的内部映射(我意识到内存中没有增益等,但是会有一个更少的成员变量来跟踪每个属性)?