C ++数组 - 限制和大小

时间:2014-09-28 15:12:36

标签: c++ arrays matrix

如何为包含4个数字(2x2)的矩阵声明一个数组?我假设int m[4]只允许最多4个数字。或者它是否意味着任何四个数字?我不明白其中的区别。

4 个答案:

答案 0 :(得分:3)

在宣言中

类型 array_name [array_size];

type 是此数组存储的数据类型。索引 i 下的数组的特定值,即 array_name [ i ]可以是 type 的任何值可以代表。

在您的示例int m[4];中声明一个包含四个整数的数组。任何这些整数的特定值可以是整数可以表示的任何值。要了解这些限制,您可以打印它们:

#include <limits>

int imin = std::numeric_limits<int>::min(); // minimum value
int imax = std::numeric_limits<int>::max(); // maximum value

答案 1 :(得分:2)

STD的使用应该简化你构建矩阵的生活:

std::vector<std::vector<int>> M(2, std::vector<int>(2));

但是如果你想使用数组:

int x[2][2];

答案 2 :(得分:2)

int m [4]将声明一个包含4个未初始化的integer类型值的数组。请记住,这些值零索引, 意思是调用数组中的值你会调用m [0-3]。您可以通过以下命令将您喜欢的任何值分配给数组:m[4] = {Value1, Value2, Value3, Value4}如果您愿意,还可以创建一个循环,将值分配给数组,这有时非常有用。

请记住,数组在C ++中并不常用,std::vector使用得更多,而且有充分的理由。 http://www.cplusplus.com/reference/vector/vector/

答案 3 :(得分:1)

int m[4]声明一个包含4个整数的数组。整数的索引将为0,1,2,3,而这些索引的值可以是任何整数。所以m[2] = 2003;将数组中的第3个值设置为2003.对于2x2方面,您可能希望执行int m[2][2];之类的操作。我认为这是声明一个大小为2的数组,包含每个点的数组,而不是整数或浮点数等等。每个点包含的数组(在这种情况下只有两个点,因此只有两个数组)每个都包含两个整数。因此,如果矩阵中的第一个值为32,则可以通过m[0][0] = 32;或更一般地m[x][y] = value_of_(x,y);进行设置。 如果你提前知道价值,那么做你所描述的最快捷方式可能是这个:

int row0col0 = value at 0th row 0th column;
int row0col1 = value at 0th row 1st column;
int row1col0 = value at 1st row 0th column;
int row1col1 = value at 1st row 1st column;
int m[2][2] = {  {row0col0, row0col1},  {row1col0, row1col1} };

或等效地:

int m[2][2] = {row0col0, row0col1, row1col0, row1col1};

这被称为行主要顺序:2d数组中的元素首先按行排序,然后按列排序。