我现在有一个二维数字数组,我需要做的是弄清楚如何用一个名字来引用它们的整个“行”......
我想要做的是在一个名为 ROOT 的程序中使每个“行”成为 TTree 上的一个 TBranch。每行是一个数字列表,对应于单个直方图上所有 bin 中的数据,每列都填充了与每个直方图中特定 bin(即:bin 3)对应的数字(如果有意义的话)。我只需要找到一种方法来按直方图/行分隔数据,并在可能的情况下将它们视为自己的独立事物。如果这不连贯,我深表歉意!
我现在有一个二维数字数组,我需要做的是弄清楚如何用一个名字来引用它们的整个“行”......
我想要做的是在一个名为 ROOT 的程序中使每个“行”成为 TTree 上的一个 TBranch。每行是一个数字列表,对应于单个直方图上所有 bin 中的数据,每列都填充了与每个直方图中特定 bin(即:bin 3)对应的数字(如果有意义的话)。我只需要找到一种方法来按直方图/行分隔数据,并在可能的情况下将它们视为自己的独立事物。如果这不连贯,我深表歉意!
我不太了解您问题的第二部分,所以我将介绍如何访问二维数组(也称为矩阵)中的行。如果这不是您所问的,则必须扩展您的问题。
多维数组通常设置为包含其他数组(等等)的数组。二维数组可能如下所示:
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);
}
此示例将为您生成一个用零填充的二维数组。但是,您指定是否myMatrix
保存保存列值的行,或者是否myMatrix
保存保存行值的列。在这种情况下,我选择它来包含行。您可以知道访问矩阵的特定行,myMatrix[i]
这将返回第 i 行作为std::vector<int>
如果您像这样创建了一个二维数组:
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]
给需要指针参数的函数。