指 2D 数组中的整行数组

Referring to an entire row of arrays in a 2D array

本文关键字:数组 2D      更新时间:2023-10-16

我现在有一个二维数字数组,我需要做的是弄清楚如何用一个名字来引用其中的整个"行"......

我试图做的是在一个名为ROOT的程序中使每个"行"成为TTree上的TBranch。每一行都是对应于单个直方图上所有箱中的数据的数字列表,并且每列都填充了对应于每个直方图中特定箱(即:箱 3)的数字(如果有意义)。我只需要找到一种方法来按直方图/行分隔数据,并在可能的情况下将它们视为自己的个人事物。如果这不连贯,我深表歉意!

我不太明白你问题的第二部分,所以我只解决如何访问 2D 数组(又名矩阵)中的行。如果这不是你问的,你将不得不扩展你的问题。

多维数组通常设置为包含其他数组(依此类推)的数组。2D 数组可能如下所示:

std::vector<std::vector<int> > myMatrix;
for (int y = 0; y < LIMIT_Y; ++y) {
    std::vector row;
    for (int x = 0; x < LIMINT_X; ++x) {
        row.push_back(0);
    }
    myMatrix.push_back(row);
}

此示例将生成一个填充为零的 2D 数组。但是,您可以指定myMatrix保存保存列值的行,还是myMatrix保存保存行值的列。在这种情况下,我选择它来包含行。您可以通过myMatrix[i]来了解访问矩阵的特定行,这将返回第 i 行作为std::vector<int>

如果您创建了这样的 2D 数组:

char** arr;
// fill up arr with elements
int rows = 20, columns = 50;
arr = (char**) malloc (rows * columns * sizeof(char));

你想引用,比如说第 5 行,你做:

arr[4] // here, the index 4 refers to the entire 5th row of arr

例如,您可以将arr[4]传递给需要指针参数的函数。