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

2023-12-15

我在我的机器人项目中使用 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);
}

Output:

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}" ;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将自定义属性添加到 Boost Graph Library 中网格的顶点 的相关文章

  • C中函数指针的递归声明

    我想声明一个返回指向相同类型函数的指针的函数 我想用它来实现如下状态机 typedef event handler t event handler t event t compilation error event handler t st
  • c# - 显示小数点到小数点后 6 位 [重复]

    这个问题在这里已经有答案了 可能的重复 具有 N 个小数位的 Double ToString https stackoverflow com questions 3059759 double tostring with n number o
  • 如何将不记名令牌发送到 ASP NET MVC 5 中的视图?

    我有一个 NET MVC and WEB API项目 我想打电话给WEB API controllers来自 javascript 但我没有找到将令牌发送到我的视图的方法 我想添加bearer token in Viewbag变量 使用以下
  • 使用空函数调用 hana::is_valid 的用途是什么?

    Boost Hana https www boost org doc libs 1 61 0 libs hana doc html index html offers boost hana is valid https www boost
  • 在 C# 中轻松创建支持索引的属性

    在 C 中我发现索引属性 http msdn microsoft com en us library aa288464 VS 71 aspx非常有用 例如 var myObj new MyClass myObj 42 hello Conso
  • WPF Dispatchertimer 延迟反应/冻结

    在我的 WPF 应用程序中 我使用 3 个不同的 DispatcherTimers 一种是用于显示当前时间 一种是每 5 秒运行一次数据库查询 第三个每 1 秒刷新一次自定义按钮的值 当我的程序运行时 有很多延迟 冻结 例如 时间开始正确计
  • 计算复杂数组的abs()值的最快方法

    我想计算 C 或 C 中复杂数组元素的绝对值 最简单的方法是 for int i 0 i lt N i b i cabs a i 但对于大向量来说 速度会很慢 有没有办法加快速度 例如使用并行化 语言可以是 C 或 C 鉴于所有循环迭代都是
  • 增量决策树 C++ 实现

    有谁知道决策树分类器的增量实现吗 这样 当您将新实例添加到训练集中时 它可以根据现有决策树分类器以低计算量并尽可能快地生成最佳决策树分类器 换句话说 我有一个最优决策树分类器集A 其中命名为T 1 现在我想添加实例X to set A并找到
  • std::tr1::function 和 std::tr1::bind

    我在使用时遇到问题veryC 类中的复杂 C 函数 重写 C 函数是not一个选项 C函数 typedef void integrand unsigned ndim const double x void fdata unsigned fd
  • 我的 WPF 应用程序未触发 MainWindow_Loaded

    我目前正在关注Pluralsight C Fundamentals Part 1并在Classes and Objects视频部分指导我在 Visual Studio 中创建一个新的 WPF 应用程序并填写代码 这导致以下结果 namesp
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 我要恢复我的记忆!我怎样才能真正处理一个控件?

    我正在制作一个应用程序 它创建大量的窗口控件 按钮和标签等 它们都是通过函数动态生成的 我遇到的问题是 当我删除控件并处置它们时 它们不会从内存中删除 void loadALoadOfStuff while tabControlToClea
  • 以编程方式运行 T4 文本模板

    有没有一种方法可以通过代码以编程方式运行 T4 文本模板 我正在制作一种自定义域特定语言 我希望相关的文本模板在用户每次保存时运行 目前 这就是我在 DSL 模型中所做的事情 protected override void OnDocume
  • 如何在Azure功能中添加razor视图文件?

    我正在创建一个应用程序 它是 azure 函数项目 我想在该项目中使用 Razor 视图 我应该在 azure 函数中使用任何模板引擎吗 得益于一些方面的进步剃刀之光项目 https github com toddams RazorLigh
  • 将授权标头添加到 Web 参考

    我正在尝试向客户端的网络服务发出请求 我不知道客户端的底层平台 我使用 添加 Web 引用 在 Visual Studio 2010 中使用了客户端的 WSDL 并生成了我的代理类 称为 ContactService 我现在需要将如下所示的
  • 用于图形操作的 Javascript 库

    有没有建议的 javascript 替代 pythonpygraph http code google com p python graph or NetworkX http networkx lanl gov 应该注意的是 可视化不是必需
  • 类型别名和不完整类型

    我可能已经超出了解决这个本应简单的问题的范围 我在这里开始这个问题 在编译时获取基类的类型 https stackoverflow com questions 17735852 getting type of a base class at
  • 为什么未到达的 try-catch 块会增加运行时间?

    我目前正在创建自己的容器库 但我已经看到无法访问 if 语句无效 try catch阻止增加运行时间 这是我的测试 Vector cpp template
  • asp.net mvc GET 请求上的 formcollection 应该为空

    我正在发布一个简单的操作 public void Login FormCollection formCollection 即使查询字符串值很少 formcollection Count is 0 是靠行为吗 FormCollection 使
  • DataGridView 捕获用户行选择

    我在处理选择时遇到问题DataGridView 我的网格视图包含一个金额列 表单上有一个文本框 应显示所选网格视图行的总数 因此 我需要在用户选择 取消选择 gridview 行时捕获事件并相应地计算 添加 减去 金额 我找到了两种方法 使

随机推荐

  • 如何在R中使用ggplot2找到两个密度的交集

    如何找到使用以下命令创建的两个密度图的交集ggplot2 来自名为的数据框的样本combined futureChange direction 2009 10 26 0 9980446 long 2008 04 28 1 0277389 n
  • Twitter oAuth callbackUrl - 本地主机开发

    其他人是否在获取 Twitter oAuth 回调 URL 来访问其本地主机开发环境时遇到困难 显然它最近被禁用了 http code google com p twitter api issues detail id 534 c1 有没有
  • 在 WPF TreeView 中单击事件时获取选定子节点的值

    我在 WPF 中有一个 TreeView 其中包含一个主节点和 5 个子节点 一旦主节点展开 我们就会得到子节点 现在在展开子节点时 我们会得到一些值 这是我在 WPF 中的 treeView 的表示 在此我想获取已扩展的 5 个子节点之一
  • 如何从 Kendo 网格中删除一行

    我有一个非常简单的设置 一个名为 list 的网格 其中的数据源填充了要显示的记录 我在每一行都有一个按钮 其中有一个调用此函数的 onClick 事件 Soft Delete person var processURL crudServi
  • 将 PeerJs 导入 NextJs [重复]

    这个问题在这里已经有答案了 所以我正在学习 NextJs 并尝试构建一个音频聊天应用程序 当我尝试导入时我陷入困境PeerJs 它抛出一个窗口未定义错误 import Peer from peerjs export default func
  • 如何从HTTP状态码获取HTTP状态文本? [复制]

    这个问题在这里已经有答案了 是否有任何标准函数 或在curl Guzzle 中 可以从HTTP 状态代码号获取HTTP 状态文本 描述 getHttpStatusText 404 Not Found 我知道我可以创建一个像这样的地图 404
  • 使用 jQuery 和 Ajax 自动填充选择框 - 不适用于 1.3.2 之后的任何版本

    我已经阅读了有关使用 jQuery 和 Ajax 自动填充框的教程 http remysharp com 2007 01 20 auto populate select boxes using jquery ajax 在演示中 作者运行的是
  • 从 ASP.NET MVC 控制器重定向到外部 URI

    我正在尝试从操作方法重定向到外部网址 但无法使其工作 有人可以阐明我的错误吗 public void ID string id string url string Empty switch id case DB2FCB11 579F 4DA
  • 单击按钮时反应本机水平滚动

    我是 React Native 的初学者 正如你可以看到image 我有一个滚动视图和两个按钮 我已经成功实现了滚动视图 效果很好 但我也希望它们在按下按钮时自动滚动 我尝试了很多搜索 但没有得到任何有效的东西 因此 我们将不胜感激任何帮助
  • 如何在 ListView 中使用 NetworkImageView

    我是 Android 新手 我遇到了一些问题 我有一个 ListView 我正在尝试使用 Network ImageView 下载图像 但我无法做到这一点 我在 onCreate 方法中有这个 networkImageView Networ
  • 将 String 转换为 int 并在Where 子句中使用

    如何转换字符串字段并用于Where子句 我遇到这样的异常 请帮助找到错误的东西 select from student where cast nvl linerevnum 0 as int 1 linerevnum 是 varchar2 例
  • 所有复选框都需要与主复选框一起选中和取消选中

    谁能帮我这个 我有两个divs 合而为一div 我有一个名为的复选框allcheck 而在另一个其他div 我有带有名称的复选框outcheck 如果我检查multiple 都需要勾选 如果我取消勾选multiple 所有内容都应该取消选中
  • 将组件绘制到 BufferedImage 会导致显示损坏

    我正在使用JScrollNavigator描述的组件here 为了在大型 类似画布 的 CAD 组件上提供导航窗口 我已将其嵌入到JScrollPane 我已经尝试去适应JScrollNavigator绘制画布的缩略图 为用户提供一些额外的
  • 在 qmetry 中的驱动程序之间来回切换

    我有一个要求 我想在多个驱动程序之间切换来执行测试 例如启动 Android 应用程序 执行一些步骤并在桌面浏览器中进行验证 完成后 切换回 Android 应用程序并继续其余流程 可能有多个实例 我必须在多个驱动程序之间切换 Use se
  • 在 Python 中将图像处理为棕褐色调

    我需要帮助弄清楚如何将图像转换为棕褐色 这就是我到目前为止所拥有的 但它只会将所有内容更改为黑色和白色 并带有非常小的棕色色调 我不确定我做错了什么 import image def convertSepia input image gra
  • 使用按位运算符提取位[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在尝试学习如何在给定输入上使用按位运算符 但我不太幸运地弄清楚如何使用它们 假设我有
  • 在所有浏览器中使用 javascript 显示或隐藏元素

    这是html代码
  • 根据语义相似性/相关性从列表中删除重复项

    R tm 如何根据语义相似性删除列表中的重复项 v lt c bank banks banking ford suv toyota suv nissan suv 我预期的解决方案是c bank ford suv toyota suv nis
  • 如何找出哪些字体可以显示这些字符?

    Unicode U 26AB Unicode U 26AA 这两个字符可以在终端中显示 我想使用convert imagemagick 命令 将这些文本转换为图片 But convert只能使用一种特殊字体 不能使用后备字体 转换 列表字体
  • 将自定义属性添加到 Boost Graph Library 中网格的顶点

    我在我的机器人项目中使用 Boost Graph Library 进行地图管理 我打算使用 Boost Grid 但发现 Boost Graph 文档真的很难理解 所以我需要一些帮助 这是我创建网格并打印它的方式 struct sample