我正在尝试学习如何在 C++ 中做事,而我正在努力解决的问题之一是如何有效地实现动态分配的多维数组。
例如,假设我有一个现有功能:
void myfunc(int *lambda, int *D, int *tau, int r[*tau][*D])
{
int i, j, k, newj, leftovers;
r[0][0] = *lambda;
j = 0; // j indexes the columns; start with zero
for(i = 1; i < *tau; i++){ // i indexes the rows
leftovers = *lambda;
for(k = 0; k < j; k++){
r[i][k] = r[i - 1][k]; // copy prior to j
leftovers = leftovers - r[i][k];
}
r[i][j] = r[i - 1][j] - 1; // decrement
r[i][j+1] = leftovers - r[i][j]; // initialize to the right of j
if(j == *D - 2){ // second to last column
for(k = 0; k <= j; k++){ if(r[i][k] != 0){ newj = k; } }
j = newj; // can't think of a better way to do this
}else{
j++; // increment j
}
} // next row please
}
根据我的阅读,似乎一个常见的建议是为此目的使用 std::vector 。有人愿意就如何使用等效的 std::vector 实现上面的 r 矩阵提供一些建议或代码片段吗?
我原以为这是一个相当普遍的情况,但有趣的是,谷歌为“C99 转换为 C++”的点击次数不到 50 次。
谢谢!
本