在Boost Graph Library中将自定义属性添加到网格的顶点

悬念

我在机器人项目中使用Boost Graph Library进行地图管理。我打算使用Boost Grid,但我发现Boost Graph文档确实很难理解,因此我需要一些帮助。

这是我创建网格并进行打印的方式:

  struct sampleVertex {
    int row;
    int col;
    bool occupied;
  };

  boost::array<std::size_t, 2> lengths = { { 3, 2 } };
  boost::grid_graph<2> gridD(lengths);
  boost::write_graphviz(fout, gridD);

现在,我想将自定义属性添加到顶点,定义为结构-'sampleVertex'。请给我一些代码片段或示例。我知道,捆绑的属性可以通过adjacency_list添加,并手动创建网格顶点和连接边。我想知道,是否可以直接使用boost :: grid_graph完成。提前致谢。

这是我可以想到的一个简单示例(它也使用输出中的属性):

Live On Coliru

#include <boost/graph/grid_graph.hpp>
#include <boost/graph/properties.hpp>
#include <boost/graph/graphviz.hpp>
#include <iostream>

struct sampleVertex {
    int row;
    int col;
    bool occupied;
    friend std::ostream& operator<<(std::ostream& os, sampleVertex& sv) {
        return os << "{" << sv.row << "," << sv.col << "," << sv.occupied << "}";
    }
    friend std::istream& operator>>(std::istream& is, sampleVertex& sv) {
        return is >> sv.row >> sv.col >> sv.occupied;
    }
};


int main() {
    boost::array<int, 2> lengths = { { 3, 2 } };
    using Graph  = boost::grid_graph<2, int>;
    using Traits = boost::graph_traits<Graph>;
    using IdMap  = boost::property_map<Graph, boost::vertex_index_t>::const_type;

    Graph gridD(lengths);
    IdMap indexMap(get(boost::vertex_index, gridD));
    // properties
    boost::vector_property_map<sampleVertex, IdMap> props(num_vertices(gridD), indexMap);

    // initialize
    for (int i = 0; i < 3; ++i)
        for (int j = 0; j < 2; ++j)
            put(props, Traits::vertex_descriptor {{i, j}}, sampleVertex{i,j,false});

    // print a property
    boost::dynamic_properties dp;
    dp.property("node_id", props);
    boost::write_graphviz_dp(std::cout, gridD, dp);
}

输出:

digraph G {
"{0,0,0}";
"{1,0,0}";
"{2,0,0}";
"{0,1,0}";
"{1,1,0}";
"{2,1,0}";
"{0,0,0}"->"{1,0,0}" ;
"{1,0,0}"->"{2,0,0}" ;
"{0,1,0}"->"{1,1,0}" ;
"{1,1,0}"->"{2,1,0}" ;
"{1,0,0}"->"{0,0,0}" ;
"{2,0,0}"->"{1,0,0}" ;
"{1,1,0}"->"{0,1,0}" ;
"{2,1,0}"->"{1,1,0}" ;
"{0,0,0}"->"{0,1,0}" ;
"{1,0,0}"->"{1,1,0}" ;
"{2,0,0}"->"{2,1,0}" ;
"{0,1,0}"->"{0,0,0}" ;
"{1,1,0}"->"{1,0,0}" ;
"{2,1,0}"->"{2,0,0}" ;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Boost Graph Library更改图形的边缘权重?

来自分类Dev

boost graph library directed multigraph edge_range bug

来自分类Dev

在Fortran程序中使用Boost Graph Library(BGL)

来自分类Dev

使用Boost Graph Library(BGL)识别连接的组件

来自分类Dev

提供顶点映射参数以增强boost :: graph :: copy_graph

来自分类Dev

Boost Graph Library:如何保持对顶点的永久引用?(即不受顶点重新编号)

来自分类Dev

在C ++ Boost Graph Creation和vertex_index属性上。

来自分类Dev

Boost :: graph Dijkstra和自定义对象和属性

来自分类Dev

Boost Graph:测试两个顶点是否相邻

来自分类Dev

在Boost Graph库中围绕捆绑属性进行设计

来自分类Dev

使用Boost :: graph随机访问顶点

来自分类Dev

如何避免在BFS中进一步搜索顶点的邻居?我正在使用Boost Graph Library

来自分类Dev

使用Boost Graph Library将Boost动态属性写入文件

来自分类Dev

Boost.Graph库:如何将boost :: is_isomorphism与命名顶点一起使用

来自分类Dev

Boost Graph Library中顶点描述符和索引之间有什么区别?

来自分类Dev

Boost Graph Library:防止DFS访问未连接的节点

来自分类Dev

在Boost.Graph中向图添加边

来自分类Dev

Boost.Graph对void的引用

来自分类Dev

Boost.Graph如何合并两个顶点/收缩边

来自分类Dev

使用Boost Graph Library和Bellman-Ford算法

来自分类Dev

Boost Graph initialize_vertex更改顶点颜色(访客)

来自分类Dev

Magento:将自定义属性添加到订单网格

来自分类Dev

Boost Graph Library:如何保持对顶点的永久引用?(即不受顶点重新编号)

来自分类Dev

在C ++ Boost Graph Creation和vertex_index属性上。

来自分类Dev

Boost Graph获得相邻顶点

来自分类Dev

使用Boost Graph Library删除顶点后无法删除边

来自分类Dev

在Boost Graph Library中进行BFS时如何修改属性?

来自分类Dev

在Boost.Graph中向图添加边

来自分类Dev

在Boost Graph Library中选择给定顶点的随机输入或输出邻居的有效方法?

Related 相关文章

  1. 1

    如何使用Boost Graph Library更改图形的边缘权重?

  2. 2

    boost graph library directed multigraph edge_range bug

  3. 3

    在Fortran程序中使用Boost Graph Library(BGL)

  4. 4

    使用Boost Graph Library(BGL)识别连接的组件

  5. 5

    提供顶点映射参数以增强boost :: graph :: copy_graph

  6. 6

    Boost Graph Library:如何保持对顶点的永久引用?(即不受顶点重新编号)

  7. 7

    在C ++ Boost Graph Creation和vertex_index属性上。

  8. 8

    Boost :: graph Dijkstra和自定义对象和属性

  9. 9

    Boost Graph:测试两个顶点是否相邻

  10. 10

    在Boost Graph库中围绕捆绑属性进行设计

  11. 11

    使用Boost :: graph随机访问顶点

  12. 12

    如何避免在BFS中进一步搜索顶点的邻居?我正在使用Boost Graph Library

  13. 13

    使用Boost Graph Library将Boost动态属性写入文件

  14. 14

    Boost.Graph库:如何将boost :: is_isomorphism与命名顶点一起使用

  15. 15

    Boost Graph Library中顶点描述符和索引之间有什么区别?

  16. 16

    Boost Graph Library:防止DFS访问未连接的节点

  17. 17

    在Boost.Graph中向图添加边

  18. 18

    Boost.Graph对void的引用

  19. 19

    Boost.Graph如何合并两个顶点/收缩边

  20. 20

    使用Boost Graph Library和Bellman-Ford算法

  21. 21

    Boost Graph initialize_vertex更改顶点颜色(访客)

  22. 22

    Magento:将自定义属性添加到订单网格

  23. 23

    Boost Graph Library:如何保持对顶点的永久引用?(即不受顶点重新编号)

  24. 24

    在C ++ Boost Graph Creation和vertex_index属性上。

  25. 25

    Boost Graph获得相邻顶点

  26. 26

    使用Boost Graph Library删除顶点后无法删除边

  27. 27

    在Boost Graph Library中进行BFS时如何修改属性?

  28. 28

    在Boost.Graph中向图添加边

  29. 29

    在Boost Graph Library中选择给定顶点的随机输入或输出邻居的有效方法?

热门标签

归档