我使用C++。
我有5个向量。
int currDim = 5;
int a[currDim] = {1,6,11,16,21};
int b[currDim] = {2,7,12,17,22};
int c[currDim] = {3,8,13,18,23};
int d[currDim] = {4,9,14,19,24};
int e[currDim] = {5,10,15,20,25};
我想将它们合并到一个
int matrix[currDim][5].
矩阵应为:
{1,2,3,4,5}
{6,7,8,9,10}
{11,12,13,14,15}
{16,17,18,19,20}
{21,22,23,24,25}
我所做的:
int j=k=0;
for(int i = 0; i<currDim ; i++)
{
matrix[i][k++] = a[j];
matrix[i][k++] = b[j];
matrix[i][k++] = c[j];
matrix[i][k++] = d[j];
matrix[i][k++] = e[j];
k = 0;
j++;
}
代码是有效的,但我在寻找更好的方法来提高效率,有什么建议吗?
最佳答案
首先,我可能不得不为我的回答道歉,因为我不太明白你所说的“更好的方法”是什么意思:它可能意味着更好的编码风格、更高的效率或通用性。
因为这确实是一个简单的任务,只需要25个分配操作,你正在处理,效率不是一个大问题在这里。
但是,为了优雅起见,可以考虑使用指针数组来存储a、b、c、d、e,并用简单优雅的循环替换五个多余的赋值语句,如下代码所示:
typedef int *pInt;
//Each element of arr is a int-type pointer
pInt arr[5] = {a, b, c, d, e};
int matrix[5][5] = {0};
for(int i = 0; i < 5; ++i){
for(int j = 0 ; j < 5; ++j){
matrix[i][j] = arr[j][i];
}
}
如果我的方法对你有帮助,请告诉我。
另外,我通常把左括号放在最后,而不是开始一个新的行,我倾向于使用
++i
而不是i++
,这是一种个人习惯,你不需要完全遵循我的风格。关于c++ - 合并5个 vector 到C++矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36526107/