【发布时间】:2021-04-05 05:23:13
【问题描述】:
我正在努力从一个函数创建多变量输出:我想返回二维数组 sites(16x15) 和整数 N。
我试过了:
我的问题是我可能不知道如何在函数的声明中定义一个二维数组std::pair
一段名为function.cpp的代码:
#include <iostream>
std::pair <int[16][15],int> sites_diamond()
{
int sites[16][15]={0};
int N=0;
for (int r=0; r<7; r++) {
N=N+1+2*r;
for (int c=0; c<(7-r);c++){
sites[r][c]=0;
sites[15-r][c]=0;
sites[r][14-c]=0;
sites[15-r][14-c]=0;
}
}
N=2*(N+15);
return std::make_pair(sites, N);
}
using namespace std;
int main(){
std::pair <int[16][15], int> result = sites_diamond();
cout << " sites \n"<<result.first<< endl;
cout << "number \n"<<result.second<< endl;
return 0;
}
我得到的错误:
function.cpp: In function ‘std::pair<int [16][15], int> sites_diamond()’:
function.cpp:21:26: error: could not convert ‘std::make_pair<int (&)[16][15], int&>(sites, N)’ from ‘std::pair<int (*)[15], int>’ to ‘std::pair<int [16][15], int>’
return std::make_pair(sites, N);
感谢您的任何建议。 我主要使用 Python 工作,但我想将代码重写为 C++。
【问题讨论】:
-
而不是原始数组定义,而是使用
std::array<std::array<int,15>,16>。这将使将数组作为值处理更容易。 -
我假设发布的代码不是真实的(它多次为数组分配零值),但声明 N 的值仅取决于 15 和 16 是否正确?
-
请查看答案并标记解决您问题的答案