boost graph计算最短路径程序异常退出问题解决

之前使用的boost 1.55版本,升级使用1.73版本后,在调用dijkstra_shortest_paths时会出现弹窗
abort()has been called
点击调试,看调用栈信息,发现计算的距离值为负数。
刚开始时,距离初始值为numeric_limits<long>::max()。
发现是在1.55版本中,距离合并使用的是closed_plus
其定义为

template <class T>struct closed_plus{const T inf;closed_plus() : inf((std::numeric_limits<T>::max)()) { }closed_plus(T inf) : inf(inf) { }T operator()(const T& a, const T& b) const {using namespace std;if (a == inf) return inf;if (b == inf) return inf;return a + b;}};

如果其中的一个值是inf,则返回inf,否则作相加操作。
而1.73版本中距离合并使用的是std::plus< D >()直接相加,会出现距离计算为负值情况

解决方法,自定义类

struct ClosedPlus
{ClosedPlus() {inf = (std::numeric_limits<long>::max)();}long operator()(long a, long b) const{if (a == inf) {return inf;}if (b == inf) {return inf;}return a + b;}private:long inf;
};

指定.distance_combine(ClosedPlus())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/611666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序分销商城,打造高效线上购物体验

小程序商城系统&#xff0c;为您带来前所未有的在线购物体验。它不仅提供线上商城购物、在线下单、支付及配送等功能&#xff0c;还凭借其便捷性成为众多商家的首选。 想象一下&#xff0c;商家可以展示琳琅满目的商品&#xff0c;包括图片、文字描述、价格及库存等详尽信息。而…

说说java8新特性

java8新特性主要有&#xff1a;函数式接口、lambda表达式、Stream API、接口对于static方法和默认方法的支持。 一、函数式接口 函数式接口指的是只有一个抽象方法的接口&#xff0c;函数式接口用FunctionalInterface注解修饰&#xff0c;java中常用的函数式接口有Runnable、C…

鸿蒙开发笔记 2

提示&#xff1a;今天又是美好的一天呢&#xff01;&#xff01;&#xff01; 文章目录 一、网络管理 一、网络管理 应用权限 http请求

内网渗透实战攻略

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 介绍 什么是内网&#xff1f; 什么是内网渗透&#xff1f; 内网渗透的目的&#xff1a; 内网…

2024--Django平台开发-Django知识点(六)

day06 Django知识点 今日概要&#xff1a; Form和ModelForm组件【使用】【源码】缓存【使用】ORM【使用】其他&#xff1a;ContentTypes、Admin、权限、分页、信号等 1.Form和ModelForm组件 背景&#xff1a;某个公司后台管理项目。 垃圾 def register(request):"&quo…

k8s之pod基础

k8s之pod基础 pod&#xff1a; pod是k8s中最小的资源管理组件 pod也是最小化运行容器化的应用的资源管理对象 pod是一个抽象的概念&#xff0c;可以理解为一个或者多个容器化应用的集合 在一个pod当中运行一个容器是最常用的方式 在pod当中同时运行多个容器&#xff0c;…

[机缘参悟-123] :实修 - 东西方各种思想流派实修的要旨与比较?

目录 前言&#xff1a; 一、东方各种思想流派实修的要旨&#xff1f; 1.1 儒、释、道、法的主要思想 1.2 儒、释、道、法各种追求的目标 1.3 儒、释、道、法各自修行的法门或修行的途径 二、西方灵修的各种派别的要旨&#xff1f; 2.0 西方灵修的各种派别 2.1 玛雅星系…

Java异常处理解析

在 Java 编程中&#xff0c;异常处理是一种重要的机制&#xff0c;用于处理程序运行时可能发生的意外情况。以下是对 Java 异常处理的解析&#xff1a; 异常的概念&#xff1a;异常是指在程序执行过程中发生的意外事件&#xff0c;可能导致程序无法正常运行。Java 中的异常可以…

Qt QRadioButton单选按钮控件

文章目录 1 属性和方法1.1 文本1.2 选中状态1.3 自动排他1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的单选按钮类是QRadioButton它是一个可以切换选中&#xff08;checked&#xff09;或未选中&#xff08;unchecked&#xff09;状态的单选按钮单选按钮常用在“多选一”的场…

【算法题】44. 通配符匹配

题目 给你一个输入字符串 (s) 和一个字符模式 (p) &#xff0c;请你实现一个支持 ? 和 * 匹配规则的通配符匹配&#xff1a; ? 可以匹配任何单个字符。 * 可以匹配任意字符序列&#xff08;包括空字符序列&#xff09;。 判定匹配成功的充要条件是&#xff1a;字符模式必须能…

分布式全局id

分布式全局id snowflake 算法是 twitter 开源的分布式 id 生成算法&#xff0c;采用 Scala 语言实现&#xff0c;是把一个 64 位的 long 型的 id&#xff0c;1 个 bit 是不用的&#xff0c;用其中的 41 bits 作为毫秒数&#xff0c;用 10 bits 作为工作机器 id&#xff0c;12 …

基于sprinmgboot实习管理系统源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而实习管理…

前端er们,你真的会用useState么?

React开发者们,我们都喜欢useState hook强大且简单的功力,但事实上,即使是经验最丰富的代码员也可能出错。 当涉及到在React中管理状态时,一个错误可能导致bug、性能问题,甚至更糟糕的是你的工作岌岌可危。 在本文中,我们将揭示5个需要你远离的常见useState错误。 继续关注,…

人工智能复习

机器学习中线性回归和逻辑回归&#xff1a; 机器学习的分类&#xff1a; 监督学习和无监督学习&#xff0c;半监督学习 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a; 监督学习是一种利用带有标签&#xff08;标记&#xff09;的数据进行训练的机器学习…

使用Windbg动态调试目标进程的一般步骤详解

目录 1、概述 2、将Windbg附加到已经启动起来的目标进程上&#xff0c;或者用Windbg启动目标程序 2.1、将Windbg附加到已经启动起来的目标进程上 2.2、用Windbg启动目标程序 2.3、Windbg关联到目标进程上会中断下来&#xff0c;输入g命令将该中断跳过去 3、分析实例说明 …

【大厂算法面试冲刺班】day1:数据结构先导课-链表、列表

链表 /*链表结点类*/ class ListNode{int val; //结点值ListNode next; //指向下一结点的指针&#xff08;引用&#xff09;ListNode(int x){val x;} //构造函数 }在链表中查找值为target的首个结点 int find(ListNode head, int target){int index 0;while(head ! null){i…

鸿蒙HarmonyOS学习手册_入门篇

鸿蒙HarmonyOS学习手册_入门篇 文章目录 鸿蒙HarmonyOS学习手册_入门篇入门快速入门开发准备基本概念UI框架应用模型工具准备 构建第一个ArkTS应用&#xff08;Stage模型&#xff09;-快速入门-入门创建ArkTS工程ArkTS工程目录结构&#xff08;Stage模型&#xff09;构建第一个…

【笔记】Helm-2 如何使用-3 Chart发布操作用以自动化GitHub的页面Chart

Chart发布操作用以自动化GitHub的页面Chart 该指南描述了如何 使用Chart发布操作 通过GitHub页面自动发布chart。Chart发布操作是一个将GitHub项目转换成自托管Helm chart仓库的GitHub操作流。使用了 helm/chart-released CLI工具。 Helm Chart Releaser Actions GitHub Ma…

Vue-10、Vue键盘事件

1、vue中常见的按键别名 回车 ---------enter <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>键盘事件</title><!--引入vue--><script type"text/javascript" src"h…

使用Vivado Design Suite平台板、将IP目录与平台板流一起使用

使用Vivado Design Suite平台板流 Vivado设计套件允许您使用AMD目标设计平台板&#xff08;TDP&#xff09;创建项目&#xff0c;或者已经添加到板库的用户指定板。当您选择特定板&#xff0c;Vivado设计工具显示有关板的信息&#xff0c;并启用其他设计器作为IP定制的一部分以…