【问题标题】:Declare multidimensional Arrays C++ (compared to python)声明多维数组 C++(与 python 相比)
【发布时间】:2022-01-03 00:14:14
【问题描述】:

来自 python 我很难理解数据结构类型及其在 c++ 中的声明。

要在 python 中声明和填充多维数组,您只需作为示例:

arr = [[],[]]

for i in range(2):
      arr[i].append(1)

C++ 中的等价物是什么?我必须使用向量还是数组?

干杯

【问题讨论】:

    标签: c++11


    【解决方案1】:

    C/C++ 中的数组是编译时固定大小的数据结构。您通过

    声明它们
    <data type> <variable name> <dimensions>;
    

    可以是任何你想要的。

    也很明显。

    需要是编译时常量,但可以是目标硬件支持的数量,语法类似于 [5] 或 [3][2]。

    你声明一个数组

    int numbers[5];
    

    double weights[3][2];
    

    然后,在 C++ 中有来自 STL 的容器。 std::vector&lt;T&gt; 的行为类似于一个动态大小的数组,与之对应的 std::array&lt;T&gt; 是一个编译时数组,就像上面提到的那样,但具有容器语义,它是一组超级普通数组。

    一个多维向量会被声明为

    std::vector<std::vector<int>> v;
    

    这只是声明一个变量并对其进行初始化 - 准确地说是一个二维数组 - 稍后您可以根据需要调整它的大小。

    还请注意,vector 将允许您实际拥有锯齿状数组,而不是矩形数组,普通数组总是强制执行。那是因为您可以将不同大小的向量作为元素推送到您的 v 中。

    您应该阅读有关 C++ 中的数据结构、容器和算法的更多信息。 C++ 参考是一个非常好的参考站点。 页面本身有很多好的指针。

    【讨论】:

    • P.S.:C 实际上有可变长度数组,它确实支持动态大小,这些大小不需要是编译时常量。你可以声明一个像int counts[n];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2016-12-09
    相关资源
    最近更新 更多