gpt4 book ai didi

c++ - 将 5 个 vector 合并到矩阵 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:19:02 25 4
gpt4 key购买 nike

我正在使用 C++。
我有 5 个 vector 。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com