C++ 如何在函数的输出中配对2D数组和整数?
我正在努力从函数中创建多变量输出:我想要返回2D数组站点(16x15)和整数N 我试过: 我的问题是,我可能不知道如何在函数std::pair的声明中正确定义2D数组 一段名为function.cpp的代码:C++ 如何在函数的输出中配对2D数组和整数?,c++,function,c++11,C++,Function,C++11,我正在努力从函数中创建多变量输出:我想要返回2D数组站点(16x15)和整数N 我试过: 我的问题是,我可能不知道如何在函数std::pair的声明中正确定义2D数组 一段名为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
#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;
}
#包括
std::pair sites_diamond()
{
int站点[16][15]={0};
int N=0;
对于(int r=0;r,由于错误是可以解释的,所以我只建议解决方案。使用指针。
如下定义您的配对:
std::pair<int**, int> result;
std::配对结果;
当然,在您的功能中,更改您定义站点的方式:
int **sites;
sites = new int*[16];
for (int i = 0;i < 16;i++)
sites[i] = new int[15];
int**站点;
地点=新整数*[16];
对于(int i=0;i<16;i++)
地点[i]=新国际[15];
关于
cout << " sites \n"<<result.first<< endl;
cout您可以使用std::array
。它更像是C++语言,您不需要关心内存分配/释放
std::配对站点\u diamond()
{
std::阵列站点;
// ...
返回std::make_对(站点,N);
}
然后用法是:
auto result=sites_diamond();
不能使用原始数组定义,而是使用std::array
。这将使将数组作为值处理变得更容易。我假设发布的代码不是真实的代码(它多次为数组赋值),但指出N的值仅取决于15和16是正确的吗?请检查答案并标出解决问题的答案
cout << " sites \n"<<result.first<< endl;