我有以下代碼
template <size_t size_x, size_t size_y>
void product(int (&arr)[size_x][size_y],int (&arr1)[size_x][size_y])
{
for (int i=0;i<size_x;i )
for (int j=0;j<size_y;j )
{
cout << "The size of a1[][] is" << arr[i][j] << endl;
}
for (int i=0;i<size_x;i )
for (int j=0;j<size_y;j )
{
cout << "The size of a1[][] is" << arr1[i][j] << endl;
}
}
int main()
{
int A[2][2] = { { 1, 2 }, { 3, 4 }};
int B[2][2] = { { 0, 5}, { 6, 7 } };
product(A,B);
return 0;
}
我正在嘗試將陣列傳遞給函式。但是,如果陣列具有相同的維度,則此程式可以正常作業。我想傳遞不同維度的陣列。如何將 2 2 和 3 2 陣列的陣列傳遞給函式?
uj5u.com熱心網友回復:
從 C 20 開始,您可以將auto其用作函式引數的型別:
void product(auto &arr, auto &arr1)
std::size(arr)您可以使用第一個索引和std::size(*arr)第二個索引獲取陣列大小。
完整程式:
#include <iostream>
using namespace std;
void product(auto &arr, auto &arr1)
{
for (const auto &inner: arr)
for (const auto &elem: inner)
{
cout << "arr[][] is " << elem << endl;
}
for (const auto &inner: arr1)
for (const auto &elem: inner)
{
cout << "arr1[][] is " << elem << endl;
}
cout << "size of arr " << size(arr) << " * " << size(*arr) << endl;
cout << "size of arr " << size(arr1) << " * " << size(*arr1) << endl;
}
int main()
{
int A[2][2] = { { 1, 2 }, { 3, 4 }};
int B[3][1] = { { 0}, { 6 }, {3} };
product(A,B);
return 0;
}
https://godbolt.org/z/7a315erhf
uj5u.com熱心網友回復:
如何將 22 和 32 陣列的陣列傳遞給函式?
這可以通過提供額外的模板引數來完成
template <size_t size_x1, size_t size_y1, size_t size_x2, size_t size_y2>
void product(int (&arr)[size_x1][size_y1],int (&arr1)[size_x2][size_y2]);
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/467050.html
上一篇:每種型別的模板虛方法
下一篇:轉發參考和引數推導
