gpt4 book ai didi

c++ - 我可以创建一个可以复制任意大小的二维数组的 'CopyArray' 函数吗?

转载 作者:行者123 更新时间:2023-11-28 02:37:39 24 4
gpt4 key购买 nike

在我的程序中,我需要复制长度为 array[3][8] 和 array[3][3] 的二维数组。由于我必须设置参数的方式,我无法在一个函数中执行此操作,因此我目前有 2 个。

void copyArray(float arrayA[][8], float arrayB[][8])
{
for (int a = 0; a < 3; a++)
{
for (int b = 0; b < 8; b++)
{
arrayA[a][b] = arrayB[a][b];
}
}
}

void copyArray(float arrayA[][3], float arrayB[][3])
{
for (int a = 0; a < 3; a++)
{
for (int b = 0; b < 3; b++)
{
arrayA[a][b] = arrayB[a][b];
}
}
}

有没有办法将其压缩成一个函数,而不是让这两个非常相似的函数?

最佳答案

如果通过引用传递数组,则可以有效地指定它们的所有维度,如果定义模板函数,则可以为这些维度使用模板参数。

像这样(也适用于元素类型):

template<typename T, size_t x, size_t y>
void copyArray(T (&arrayA)[x][y], const T (&arrayB)[x][y])
{
for (int a = 0; a < x; a++)
{
for (int b = 0; b < y; b++)
{
arrayA[a][b] = arrayB[a][b];
}
}
}

在 C++ 11 中,这可能会被替换为单行代码,但模板将遵循相同的原则。

关于c++ - 我可以创建一个可以复制任意大小的二维数组的 'CopyArray' 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973189/

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