gpt4 book ai didi

c++ - C++ 中带有 std::vector 的二维数组 - 容器

转载 作者:行者123 更新时间:2023-11-30 02:39:07 30 4
gpt4 key购买 nike

我试图通过制作 EdgeWeights vector 的 vector 来制作二维数组(它用于邻接矩阵),但我无法理解嵌套容器的功能。

我正在构建前面提到的结构,

std::vector<std::vector<EdgeWeight> > M = 
std::vector<std::vector<EdgeWeight>>(num_edges, std::vector<EdgeWeight>(num_nodes));

但我无法理解正在发生的事情。为什么参数会按照该顺序到达它们执行的位置?此外,一旦创建,我不明白如何访问容器的元素。这是如何工作的?

编辑:我猜测将边缘权重添加到邻接矩阵是这样的

M.at(u).at(v) = weight; //M is the matrix.

最佳答案

模板类std::vector具有以下构造函数

explicit vector(size_type n, const T& value, const Allocator& = Allocator());
explicit vector(size_type n, const Allocator& = Allocator());

第一个构造函数允许定义一个包含n 的对象最初由 value 初始化的元素

代替定义

std::vector<std::vector<EdgeWeight> > M = 
std::vector<std::vector<EdgeWeight>>(num_edges, std::vector<EdgeWeight>(num_nodes));

你可以简单地写

std::vector<std::vector<EdgeWeight> > M( num_edges, std::vector<EdgeWeight>(num_nodes) );

所以在这个定义中你创建对象M包含 num_edges类型元素 std::vector<EdgeWeight>std::vector<EdgeWeight>(num_nodes) 初始化.即每个元素依次是 num_nodes 的 vector 使用第二个构造函数创建的元素。

您可以想象这是用 num_edges 创建一个矩阵行和 num_nodes列。只有每一行都是 std::vector<EdgeWeight> 类型的对象并且您需要为其调用一个构造函数来指定必须在该行中创建多少列。

关于c++ - C++ 中带有 std::vector 的二维数组 - 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30148723/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com