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