这是我的问题,我正在处理一个n维数据。为了简单起见,假设n = 2。另外我有一个数据的算法。为了扩大该算法的2D问题,我可以做是否可以通过一个模板函数实现按列操作和按行操作?
for each row
apply algorithm
但是,如果我想申请这个算法,每列,我需要写一个新的功能
for each column
apply algorithm
例如,假设我有一个函数:
void func(vector<T> &vec);
然后,向此功能适用于矢量我可以简单地调用这个函数:
vector<T> vec;
func(vec);
对于3D数据:
T multiArray[l][m][n];
从我的知识,如果我想申请以上在第一维度的所有矢量功能,我会做:
for(int j=0;j<m;j++){
for(int k=0;k<n;k++){
vector<T> singleArray;
for(int i=0;i<l;i++){
singleArray.push_back(multiArray[i][j][k]);
}
func(singleArray);
}
}
但是,对于相同的数据,如果我想在第三维上应用上述所有向量的函数,我需要将其重写为:
for(int i=0;i<l;i++){
for(int j=0;j<m;j++){
vector<T> singleArray;
for(int k=0;k<n;k++){
singleArray.push_back(multiArray[i][j][k]);
}
func(singleArray);
}
}
基本上,除了每个循环中的迭代器外,所有内容都是相同的。我希望有一些方法可以用一个函数来实现这两种计算。
THX使用参考
反正是有这个功能可以为任意尺寸工作? –
@DiMiao - 回答改善;希望这可以帮助。 – max66
Thx,你的方法为我的问题提供了一个很好的方向。这真的很有帮助。 –