二维数组值 C++

Posted

技术标签:

【中文标题】二维数组值 C++【英文标题】:2D array values C++ 【发布时间】:2011-06-26 06:08:33 【问题描述】:

我想声明一个二维数组并为其赋值,而不运行 for 循环。

我认为我可以使用以下想法

int array[5] = 1,2,3,4,5;

这也可以很好地初始化二维数组。但显然我的编译器不喜欢这样。

/*
 1   8  12  20  25
 5   9  13  24  26
*/

#include <iostream.h>

int main()

    int arr[2][5] = 0;   // This actually initializes everything to 0.
    arr [1] [] = 1,8,12,20,25; // Line 11
    arr [2] [] = 5,9,13,24,26;
    return 0;

J:\CPP\Grid>bcc32.exe Grid.cpp

Borland C++ 5.5.1 for Win32 版权所有 (c) 1993, 2000 Borland

Grid.cpp:

错误 E2188 Grid.cpp 11:函数 main() 中的表达式语法

错误 E2188 Grid.cpp 12:函数 main() 中的表达式语法

警告 W8004 Grid.cpp 14:“arr”被分配了一个从未在函数中使用的值 离子主()

* 2 个编译错误 *

请帮忙看看用我的一组值初始化二维数组的正确方法是什么。

【问题讨论】:

【参考方案1】:

像这样:

int main()

    int arr[2][5] =
    
        1,8,12,20,25,
        5,9,13,24,26
    ;

这应该包含在您的 C++ 教科书中:您使用的是哪一本?

无论如何,最好考虑使用std::vector 或一些现成的矩阵类,例如来自 Boost。

【讨论】:

谢谢。我正在考虑用 C++ Vol1 思考。但我不认为它是专门针对二维数组的一章。 可以先声明数组,然后再赋值吗? @Ayos:是的,如果您一次分配一个项目。要分配整个 shebang,您需要 C++11 和包含在 struct 中的数组。那么你只需使用std::array。好吧,尝试一下,它可以用 g++ 4.7.2 很好地编译,但不能(还)用 Visual c++ 编译(我使用了 2012 年 11 月的 CTP)。所以批发任务似乎还不是很便携。 不幸的是,很多 C++ 教科书没有明确说明如何初始化二维数组。而那些通常只展示如何使用嵌套 for 循环的人。我说很遗憾,因为这是学习的重要语法。【参考方案2】:

只是想指出你不需要指定数组的所有维度。

编译器可以“猜测”到最左边的维度。

#include <stdio.h>
int main(void) 
  int arr[][5] = 1,2,3,4,5, 5,6,7,8,9, 6,5,4,3,2;
  printf("sizeof arr is %d bytes\n", (int)sizeof arr);
  printf("number of elements: %d\n", (int)(sizeof arr/sizeof arr[0]));
  return 0;

【讨论】:

【参考方案3】:

另一种方法是将二维数组表示为一维数组。这可以使元素操作更有效。您可能应该将它包装在一个还包含宽度和高度的类中。

另一种选择是将二维数组表示为std::vector&lt;std::vector&lt;int&gt; &gt;。这将允许您使用 STL 的算法进行数组运算,并且向量还将为您处理内存管理。

【讨论】:

【参考方案4】:

在 C 或 C++ 中初始化多维数组的正确方法是

int arr[2][5] = 1,8,12,20,25, 5,9,13,24,26;

如果需要,您可以使用相同的技巧来初始化更高维的数组。

另外,在你的初始代码中要小心——你试图在数组中使用 1 索引的偏移量来初始化它。这没有编译,但如果编译了会导致问题,因为 C 数组是 0 索引的!

【讨论】:

【参考方案5】:

int iArray[2][2] = 1, 2, 3, 4;

将二维数组视为数组的数组。

【讨论】:

以上是关于二维数组值 C++的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 for 循环将一维数组的值放入 C++ 中的二维数组

C++二维数组给一维数组赋值

c++输入一个5行5列的二维数组,求最大值和最小值其对应行列的位置。。

使用循环将值从 C++ 中的一维数组添加到二维数组中

c++ 用户输入 2个值 定义二维数组 但是报错

c++返回二维数组的最大元素和它所在的行、列号?