我搜索了n维数组中的映射函数,但没有找到特定的答案。我想知道多维数组如何在c ++中工作?什么是在n维数组中找到特定索引处的元素的通用公式。
答案 0 :(得分:1)
给定k维数组arr[n,1][n,2][n,3]...[n,k]
,arr[x,1][x,2][x,3]...[x,k]
元素的索引为x,k + x,(k-1) * n,k + x,(k-2) * n,k * n,(k-1) + ... + x,1 * n,2 * n,3 * ... * n,k
。
答案 1 :(得分:-1)
使用重新定义的oprator []
重新定义返回对象的operator []template<T>
struct Matrix {
// initialization and access checking skipped
typedef std::vector<T> t_raw;
typedef std::vector<t_raw> t_col;
t_col m_mat;
struct Idx {
Matrix* mat;
size_t row;
T& operator[](size_t col) {
return this->mat->m_mat[ this->row ][col];
};
}
Idx operator[](size_t row) {
Idx idx;
idx.mat = this;
idx.row = row;
return idx;
};
friend class Idx;
};
Matrix<int> m;
m[1][2] = 5;