boost图形库定向多图edge_range错误

2023-12-06

我有一个有向多重图,其顶点为 A..C,边为 E1..E4

A ---E1--> B
A ---E2--> B
A ---E3--> B
B ---E4--> C

我想迭代连接 A 和 B 的边。

在 BGL 中,我将其表达为:

#include <boost/graph/adjacency_list.hpp>

struct Vertex
{
  std::string code;
};

struct Edge
{
  double distance;
  std::string code;
};

int main()
{
  using namespace boost;
  typedef adjacency_list<listS, vecS, directedS, Vertex, Edge> Graph;
  Graph g;
  auto a= add_vertex(Vertex{ "A" }, g);
  auto b= add_vertex(Vertex{ "B" }, g);
  auto c= add_vertex(Vertex{ "C" }, g);
  add_edge(a, b, Edge{ 10, "E1" }, g);
  add_edge(a, b, Edge{ 10, "E2" }, g);
  add_edge(a, b, Edge{ 10, "E3" }, g);
  add_edge(a, c, Edge{ 10, "E4" }, g);

  // checking number of edges
  std::cout<< num_edges(g)<< std::endl;

  // printing edges branching from A
  auto erange= out_edges(a, g);
  for(auto i= erange.first; i!= erange.second; ++ i)
    std::cout<< g[*i].code<< std::endl;

  // now we want to iterate over edges that connect A and B
  auto wtf= boost::edge_range(a, b, g);
}

这会导致编译错误:

In file included from /usr/include/boost/graph/adjacency_list.hpp:246:
/usr/include/boost/graph/detail/adjacency_list.hpp:1617:25: error: no matching constructor for initialization of 'StoredEdge' (aka
      'boost::detail::stored_edge_property<unsigned long, Edge>')
        equal_range(el, StoredEdge(v, fake_edge_container.end(),
                    ^          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我已阅读文档:

std::pair<out_edge_iterator, out_edge_iterator> edge_range(vertex_descriptor u, vertex_descriptor v, const adjacency_list& g) Returns a pair of out-edge iterators that give the range for all the parallel edges from u to v. This function only works when the OutEdgeList for the adjacency_list is a container that sorts the out edges according to target vertex, and allows for parallel edges. The multisetS selector chooses such a container.

( http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/adjacency_list.html )

修改了图表:

typedef adjacency_list<multisetS, vecS, directedS, Vertex, Edge> Graph;

但错误并没有改变。

那么如何使用 BGL 列出有向多重图中两个顶点(从 -> 到)之间的边?

我找到了一个快速而肮脏的方法:

auto erange= out_edges(a, g);$
for(auto i= erange.first; i!= erange.second; ++ i)$
  std::cout<< g[*i].code<< " -> "<< g[target(*i, g)].code<< std::endl;$

这将使我可以按目标顶点过滤边缘。但你如何使用boost::edge_range ?


此错误之前已在增加邮件列表.

当定向选择器模板参数为 adjacency_list设置为directedS,但如果参数有效 要么是无向的,要么是双向的。下面附上一段短文 说明问题的程序。问题是edge_range() 通过带有 3 个参数的构造函数实例化 StoredEdge,但是 当定向选择器被定向时 StoredEdge 被类型定义为 stored_edge_property,没有 这样的构造函数。一种解决方案可能是创建重载 edge_range_dispatch() 函数,并调度
配置::on_edge_storage。

改变directedS to undirectedS在你的程序中。实例。但这可能不是您的应用程序所需要的,因此您之前提到的简单过滤器可能会更好。您可以将其重新发布到 Boost 邮件列表上,以获得更多关注。

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

boost图形库定向多图edge_range错误 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 我可以将图像表单数据传递给 PHP 函数进行上传吗?

    我正在尝试使用 jquery 和 PHP 上传图像 如下所示 HTML
  • 为什么“ps”中没有出现“echo”?

    我很难理解 ps 命令上显示的内容 为了测试我的理解 我创建了下面的虚拟脚本 bin bash for i in 1 100000 do date u date u date u done 运行此脚本时 我打开了一个新终端并重复执行 ps
  • Ajax 响应:[readyState:0,responseText:“”,状态:0,statusText:“错误”]

    我的 ajax 调用导致错误 这是我可以在错误回调中获得的信息 readyState 0 responseText status 0 statusText error 这意味着什么 我究竟做错了什么 这是我的 ajax 调用 var aja
  • 使用where条件创建唯一索引

    现在我有下面的用户表 并且希望电子邮件列在 id 有前缀时唯一auth0 column id text email text not null 所以我尝试了这个CREATE UNIQUE INDEX陈述 CREATE UNIQUE INDE
  • 如何使图像适合框架,保持纵横比并在缩略图列表中居中

    我想将列表缩略图框显示为数据网格 每个缩略图必须放置在具有特定宽度和高度的框架中 为了一致性 如下所示 div class frame img src img1 jpg div div class frame img src img2 jp
  • PHP 中如何将数组元素转换为字符串?

    如果我有一个包含对象的数组 a array objA objB 每个对象都有一个 toString method 如何将所有数组元素转换为字符串 以便数组 a除了它们的字符串表示之外不再包含任何对象 是否有单行或我必须手动循环数组 一行 a
  • Golang 写入输入并从终端进程获取输出

    我有一个关于如何从终端子进程 例如 ssh 发送输入和接收输出的问题 python 中的一个例子是这样的 如何为子进程提供密码并同时获取标准输出 我在 Golang 中找不到与上述工作方式类似的简单示例 在 Golang 中 我想做这样的事
  • Delphi 10.3.3 未能通过 macOS 公证

    我的程序在Delphi 10 3 2中经过公证 但在10 3 3中失败 PAClient 退出并显示代码 1 是否有日志可以帮助我诊断问题 如果是这样 我该如何找到它 这是之后的整个错误 Connecting to 192 168 1 23
  • 为什么 int[] 上的 Arrays.asList 返回 List,而不是 List

    考虑这段代码 int tcc 1 2 3 ArrayList
  • Javascript 设置打印样式表

    如何修改打印样式表对象的样式 我正在使用 jQuery 如果这有帮助的话 我基本上想设置一个对象的 css 属性 但该属性仅适用于打印 而不适用于屏幕 例如 myobject css background white print 这个问题有
  • 如何使用timeit模块

    我该如何使用timeit比较我自己的功能的性能 例如 insertion sort and tim sort 如果你想使用timeit在交互式 Python 会话中 有两个方便的选项 Use the IPython壳 其特点是方便 time
  • 从轮廓中删除图例

    这是从R获得的图片 代码如下 我想将其导出为 PDF 格式 不过 我想首先删除右侧的图例栏 据我所知 没有可选参数来控制这个条形图例 你会怎么做 library gplots f lt function x y theta num lt x
  • SimpleDateFormat 抛出 ParseException 错误偏移量为 0

    下面的代码有什么问题 它抛出一个 ParseException 错误偏移量为 0 final DateFormat df new SimpleDateFormat EEE MMM dd HH mm ss yyyy df parse Thu
  • PrimeFaces p:editor 基于什么?

    我想向 PrimeFaces 添加一些客户端功能p editor 但由于某种原因 我无法发现他们用来构建组件的 JavaScript 客户端代码 有人能指点我吗 附 我想做的两件事是使组件可调整大小 PrimeFaces 不支持 并且我想添
  • 多态性和接口 - 澄清?

    迂腐的问题 根据维基百科多态性有 3 种类型 特设多态性 指的是可以应用于参数的多态函数 不同的类型 但根据类型的不同 其行为也不同 它们所适用的论点 换句话说 重载 function Add x y Integer Integer fun
  • 减去 Pandas 或 Pyspark Dataframe 中的连续列

    我想在 pandas 或 pyspark 数据框中执行以下操作 但我仍然没有找到解决方案 我想从数据框中的连续列中减去值 我所描述的操作如下图所示 请记住 输出数据帧的第一列不会有任何值 因为输入表中的第一列不能被其前一列减去 因为它不存在
  • 如何使用 gfortran-10 构建 MPICH?

    TL DR 如何使用 gfortran 10 gcc 10 和 g 10 构建 MPICH 背景 我想用 grortran 10 构建 MPICH以便能够使用最新的 MPI 绑定 但我还没能做到 尝试在 Ubuntu 上通过 apt 安装
  • 是否有相当于“az rest”的PowerShell?

    我最近发现了az rest命令 它允许我执行经过身份验证的 REST 命令 而不必担心获取令牌 https www codeisahighway com native azure rest api calls now available i
  • Google OAuth Android 的重定向 url

    从未真正使用过 OAuth 现在尝试实现它 我想从 google 和 facebook 获取访问令牌和配置文件数据 使用 Xamarin Auth 使用 Facebook 没有问题 我指定 http www facebook com con
  • boost图形库定向多图edge_range错误

    我有一个有向多重图 其顶点为 A C 边为 E1 E4 A E1 gt B A E2 gt B A E3 gt B B E4 gt C 我想迭代连接 A 和 B 的边 在 BGL 中 我将其表达为 include