C++ 对静态2D数组的引用?

C++ 对静态2D数组的引用?,c++,arrays,C++,Arrays,我有一些静态大小的2D数组: double quickStats[NUM_REPETITIONS][NUM_TRIALS]; double mergeStats[NUM_REPETITIONS][NUM_TRIALS]; double bstStats[NUM_REPETITIONS][NUM_TRIALS]; 稍后,我想引用其中一个: double stats[NUM_REPETITIONS][NUM_TRIALS]; if(i == 0) { stats = qu

我有一些静态大小的2D数组:

double quickStats[NUM_REPETITIONS][NUM_TRIALS];
double mergeStats[NUM_REPETITIONS][NUM_TRIALS];
double bstStats[NUM_REPETITIONS][NUM_TRIALS];
稍后,我想引用其中一个:

double stats[NUM_REPETITIONS][NUM_TRIALS];

    if(i == 0) {
        stats = quickStats;
    }
    else if(i == 1) {
        stats = mergeStats;
    }
    else if(i == 2) {
        stats = bstStats;
    }
然而,这是行不通的

如果没有嵌套for循环来手动将每个元素复制到引用数组中,我可以做什么来完成我正在尝试做的事情

我只需要读取统计数据,这是为了避免冗余代码


谢谢

创建一个指向它的指针,如下所示:

double(*stats)[NUM_重复][NUM_试验];
由于您的维度在编译时已知,因此您可以使用更通用和可读的:

std::数组stat;
试试这个:

#define NUM_REPETITIONS 10
#define NUM_TRIALS 10
double quickStats[NUM_REPETITIONS][NUM_TRIALS];
double mergeStats[NUM_REPETITIONS][NUM_TRIALS];
double bstStats[NUM_REPETITIONS][NUM_TRIALS];

int main(){
    double (* ptr)[NUM_TRIALS] =quickStats;
}

引用必须在声明时初始化,以便以后不能分配它。最好是在if分支内使用指针或声明引用

constexpr unsigned int N = 100;

double a[N][N] = {0};

/* Pointer. In your case, N should be NUM_TRAILS here */
double (*a_ptr)[N] = a;


/* Specified Reference Type */
double (&a_ref)[N][N] = a;

/* C++11 Auto Reference */
auto &a_autoref = a;

在此处测试:

我假设您不想要独立副本,可能是重复的?我假设您想要的是指针而不是引用?引用必须在声明时初始化,以便以后不能分配它。最好是在if分支内使用指针或声明引用。该引用应该分配给某个对象,对吗?考虑到OP的问题,只有一堆稍微邪恶的三元表达式才行;使用此语法,您可以通过
ptr[3][4]
访问元素。您也可以指向不同重复次数的列表,尽管试验次数必须保持不变。@MattMcNabb,谢谢您的编辑和评论。我当时正在使用Vim的自动完成功能,但没有给予足够的注意。:)