gpt4 book ai didi

c++ - 我应该使用 boost::property_map 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:17 25 4
gpt4 key购买 nike

(为标题道歉,我想不出一个短于 140 个字符的好标题...)

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

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

最佳答案

简而言之,使用m 创建一个映射m 和一个关联属性映射pm,您不会生成冗余。更多信息如下。

boost::associative_property_map 不会创建新 map 。它仅引用另一个 map 并使其可通过 boost property_map API(获取和放置)访问。

参见文档示例 here .

如果您查看 associative_property_map 的构造函数,您会发现它采用对容器的引用并将其地址存储为指针 (m_c)。看here并在文件中搜索“associative_property_map”。

关于c++ - 我应该使用 boost::property_map 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com