C++ 对静态2D数组的引用?
我有一些静态大小的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
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的自动完成功能,但没有给予足够的注意。:)