12.0 图概念 表达式 返回类型或描述 Graph boost::graph_traits<G>::vertex_descriptor 节点对象的类型 boost::graph_traits<G>::edge_descriptor 边对象的类型 boost::graph_traits<G>::directed_category 有向或无相? boo 2023-10-31 技术 > C++ > 翻译 #C++ #Boost #第三方库
9.1 属性映射 图的抽象数学性质和要解决的具体问题之间主要是靠附加在图的顶点和边上的属性联系起来的,例如距离、容量、权重、颜色等。在数据结构实现方面,有很多方法可以将属性附加到图上,但图算法不必处理属性的实现细节。属性映射概念部分中定义的属性映射接口提供了从图访问属性的通用方法。这是 BGL 算法中用于访问属性的接口。 属性映射接口属性映射接口指定使用单独的属性映射对象来访问每个属性。在下面的示例中,我们展示了 2023-10-31 技术 > C++ > 翻译 #C++ #Boost #第三方库
基础图论回顾 本章旨在复习基础图论。如果读者之前对图算法有所了解,本章应该足以入门。如果读者之前没有接触过图算法,我们建议阅读更全面的介绍,例如 Cormen、Leiserson 和 Rivest 的《算法导论》。 图抽象图是一种数学抽象,可用于解决多种问题。从根本上来说,图由一组顶点和一组边组成,其中边是连接图中两个顶点的东西。更准确地说,图是一对 $(V,E)$,其中 $V$ 是有限集,$E$ 是 $V$ 2023-10-29 技术 > C++ > 翻译 #C++ #Boost #第三方库
Boost 图类库快速入门 图数据结构和算法在某些方面比容器更加复杂。STL 使用的抽象迭代器接口不够丰富,无法包含图算法遍历图的多种方式。相反,我们制定了一个用于图的抽象接口,与迭代器用于基本容器的目的相同(尽管迭代器仍然扮演着重要角色)。图 1 描述了 STL 和 BGL 之间的相似之处。 图抽象由一组顶点(或节点)和一组连接顶点的边(或弧)组成。图 2 描述了一个有向图,它有 5 个顶点(标记为 0 到 4)和 11 2023-10-27 技术 > C++ > 翻译 #C++ #Boost #第三方库
Boost 图类库简介 图(Graph)是一种数学抽象,可用于解决计算机科学领域中的多种问题。因此,这种抽象必须也用计算机程序表示出来。一个用于遍历图的标准化的范型接口,对于促进对图算法和数据结构的重用,具有无可比拟的重要性。Boost 图类库(BGL)的一部分是一个可用于访问图的结构的范型接口,同时隐藏了其实现细节。这是一个“开放”的接口,这意味着任何实现了该接口的图类库,都将可以与 BGL 范型算法(或是其他使用了该 2023-10-25 技术 > C++ > 翻译 #C++ #Boost #第三方库
C++ 值类别探究 C++ 在演进过程中逐渐增强和拓展了对类型的处理能力。 由于表达式产生的中间结果会产生导致多余的拷贝,因而在 C++11 中引入了移动语义来解决这个问题,同时对值类别的左值、右值进行重新定义。需要注意的是,值类别指的是表达式结果的类别,并不是值对象、变量或者类型的类别。 对值类别的准确理解,是掌握移动语义的关键,能够帮我我们写出更优雅高效的代码,那么今天让我们一起来探究一下值类别。 1. 引用引用 2023-08-24 技术 > C++ > 笔记 #C++ #特性 #值类别
C++ 概念简介 C++ 模板不仅具备强大的泛化能力,自身也是一种“图灵完备”的语言,掀起了 C++ 之父 Bjarne Stroustrup 自己都没料到的“模板元编程”这一子领域。 但是,使用模板做泛型编程,最大的问题就是缺少良好的接口,一旦使用过程中出现偏差,报错信息我们难以理解,甚至无从下手。更糟的是,使用模板的代码几乎无法做到程序 ABI 层面兼容。这些问题的根本原因是 C++ 语言本身缺乏模板参数约束能 2023-08-21 技术 > C++ > 笔记 #C++ #模板 #特性
Boost 库概览 Boost 提供免费的同行评审的可移植 C++ 源代码库。 我们强调与 C++ 标准库配合良好的库。Boost 库旨在具有广泛的用途,并且可在广泛的应用程序中使用。Boost 许可证鼓励 所有用户以最小的限制使用 Boost 库。 我们的目标是建立“现有实践”并提供参考实现,以便 Boost 库适合最终标准化。从库技术报告(TR1) 中包含的 10 个 Boost 库开始,一直到 2011 年以 2023-08-17 技术 > C++ > 翻译 #C++ #Boost #第三方库
Range-v3 库官方文档 前言C++14/17/20 的范围库。此代码是 C++20 中范围支持的基础。 开发状态 这些代码相当稳定,经过充分测试,适合随意使用,尽管目前缺乏文档。不做出任何有关支持或长期稳定性的承诺。该代码将不断发展,而不考虑向后兼容性。 一个需要注意的例外是在 range::cpp20 命名空间中找到的任何内容。这些组件很少改变或者(最好)永远不会改变。 安装该库仅包含头文件。您可以 2023-08-14 技术 > C++ > 翻译 #C++ #函数式编程 #Range-v3
Eigen 库官方文档 Eigen 是一个用于线性代数的 C++ 模板库:它包含矩阵、向量、数值求解器以及相关算法。 概述 Eigen 用途广泛。 它支持任意大小的矩阵,从小型固定大小矩阵到任意大小的大型稠密矩阵,甚至是稀疏矩阵。 它支持所有的标准数字类型,包括std::complex,整型以及很容易拓展到用户数字类型。 它支持各种矩阵分解操作和几何学特征。 它的非官方支持模块提供了许多特殊的功能,例如像非线性优化、矩 2023-08-13 技术 > C++ > 翻译 #C++ #Eigen #线性代数