gpt4 book ai didi

c++ - 在 boost 图形库中绑定(bind)到 std::vector 的外部属性映射

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:26 25 4
gpt4 key购买 nike

我目前正在尝试定义 boost 图的外部属性。我使用一些捆绑属性作为内部属性:

struct VertexProperties
{
int demand;
};

struct EdgeProperties
{
uint capacity;
int cost;
};

typedef adjacency_list <vecS, vecS, bidirectionalS, VertexProperties, EdgeProperties> Graph;

但是,在算法期间,我需要一些外部属性,也就是说,我希望能够将图形的边/顶点映射到存储在 std::vector 中的元素,以便我可以通过运算符[访问它们] ](边 e)。我站在 boost 文档前,毫 headless 绪。好像我需要一个 property_map,但我不知道如何将它们与 vector 一起使用。到目前为止,我发现的唯一例子涉及从顶点到 vector 的映射,但由于顶点是无符号整数,所以这是微不足道的。

到目前为止,我对 boost 感到非常沮丧,我认为它可以为我节省很多 时间来自己实现和测试图形类,我真的不明白这种疯狂的模板元编程的东西。 ..

最佳答案

无论图表中有什么内部和/或捆绑属性,您都可以创建外部属性映射。在边上创建属性映射有点困难,因为您需要 edge_index 映射,而 adjacency_list 默认没有这些映射; compressed_sparse_row_graph 可以,但其结构在构建后大部分是只读的。您可以在边上使用 associative_property_map,或者创建边索引图作为内部属性(如果您不经常更改图形),填充它,然后使用它来构建外部属性映射(例如,使用 shared_array_property_map)。

关于c++ - 在 boost 图形库中绑定(bind)到 std::vector 的外部属性映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234910/

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