[英]Reference to a static 2D array?
我有一些靜態大小的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循環手動將每個元素復制到引用數組中,我該怎么做呢?
我只需要從統計數據中讀取,這是為了避免冗余代碼。
謝謝
嘗試這個:
#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;
}
像這樣創建一個指向它的指針:
double (*stats)[NUM_REPETITIONS][NUM_TRIALS];
由於您的維度在編譯時是已知的,因此您可以使用std::array<>
,它更通用和可讀:
std::array<std::array<double, NUM_TRIALS>, NUM_REPETITIONS> stat;
引用必須在聲明時初始化,以便您以后不能分配它。 您最好的選擇是使用指針或在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;
在這里測試: Coliru
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.