【问题标题】:How do I interpret multidimensional vectors?如何解释多维向量?
【发布时间】:2018-08-23 23:24:58
【问题描述】:

我不懂多维向量的语法。

多维数组非常简单。

foo[3][5];

这是 5 个元素,每个元素 3 个元素。

向量并不是那么直接。

vector<vector<int>> foo(n);

我对每个 foo 都读过这个,“类型”是向量。将一个向量用于另一个向量的类型如何使它成为二维的?另外,vector&lt;int&gt; 是否仍然与具有标识符的向量、具有空整数的向量相同?

【问题讨论】:

  • 如果你写vector&lt;vector&lt;int&gt;&gt; foo(3, vector&lt;int&gt; (5));可能会让它有点清楚吗?
  • 我理解它的含义以及它是如何工作的。我只是不明白为什么 vector&lt;int&gt; 被用作 int。可以肯定地说vector&lt;int&gt; 表示整数向量,vector&lt;vector&lt;int&gt;&gt; 表示整数向量的向量吗?
  • @JimGordon 是的,就是这个意思。 (但是您在哪里看到向量被“用作 int”?)
  • @molbdnilo vector&lt;vector&lt;int&gt;&gt;vector&lt;int&gt; is where the other vector's int` 将是。
  • &lt;&gt; 之间的位是元素的类型。 vector&lt;int&gt; 是一个和其他类型一样的类型,大多数类型都可以存储在一个向量中,包括向量。 (数组是一个明显的例外。)

标签: c++ arrays multidimensional-array vector


【解决方案1】:

你对int foo[3][5];的理解是正确的:它是一个由三个内部数组组成的外部数组,每个内部数组包含5个整数。

为了便于讨论,稍微简化了一点,但如果您认为数组和向量可以互换,vector&lt;vector&lt;int&gt;&gt; foo; 并没有什么不同。

它是一个外部向量,每个成员都是一个包含整数的内部向量。

所以从矩阵的角度考虑,外部数组/向量是列,内部数组/向量是行。真的没有那么不同。正是这种行/列性质使它成为二维的。

没有任何论据表明实现在底层是非常不同的,但是当您使用它们时,它们的行为会彼此非常相似。

【讨论】:

    【解决方案2】:

    foo 并不是真正的“多维”数组,它是一个元素也是数组的数组。

    int foo[3][5];
    

    foo 是一个包含三个元素的数组,每个元素是一个包含五个元素的数组。
    也就是说,foo[1] 是一个由五个ints 组成的数组(它的类型是int[5])。

    向量向量的工作方式类似于数组数组,只是它们的大小不固定。

    vector<vector<int>> foo(n);
    

    n 元素创建一个向量,每个元素都是一个空向量(因为向量默认为空)。

    vector<vector<int>> bar(3, vector<int>(5));
    

    将创建一个包含三个vector&lt;int&gt; 元素的向量,而bar[1] 将是一个包含五个int 元素的向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      相关资源
      最近更新 更多