c++ - 如何在函数的输出中配对二维数组和整数?
问题描述
我正在努力从一个函数创建多变量输出:我想返回二维数组sites(16x15)和整数N。
我试过:
我的问题是我可能不知道如何在函数std::pair <int [][] ,int>的声明中正确定义二维数组。
一段名为 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
. 它更像 C++,你不需要关心内存分配/释放。
std::pair <std::array<std::array<int, 15>, 16>, int> sites_diamond()
{
std::array<std::array<int, 15>, 16> sites;
// ...
return std::make_pair(sites, N);
}
然后用法是:
auto result = sites_diamond();
cout << " sites \n" << result.first.size() << endl;
cout << " number \n" << result.second << endl;
推荐阅读
- python - 以 (Ip,port) 为变量的 Socket 编程服务器
- matlab - 使用 Matlab 操作 3D 模型以创建指定的空隙
- python - 我尝试使用二分法在 [0,1] 中找到函数 x^4 - 5x^3 + (22/3)x^2 - (116/27)x + (8/9) 的根,其中 e = 0.01
- list - 提取列表中的 Erlang 元组
- r - 我需要为指数分布构建 Kolmogorov Smirnov 检验,但我不知道如何在 R 中获取给定数据的速率
- reactjs - 如何将 refs 从一个子组件更改为另一个子组件?
- c# - 在另一个 List 中循环一个 C# List 的元素
- c# - 是否可以在异步方法中返回指向 IAsyncEnumerable 的指针?
- python - 从数据集中选择一个特定的日期,如果不可用,则选择下一个工作日
- android - 在android studio中动态显示卡片