首页 > 解决方案 > 如何在函数的输出中配对二维数组和整数?

问题描述

我正在努力从一个函数创建多变量输出:我想返回二维数组sites(16x15)和整数N

我试过:

  1. std::make_tuple 在这里
  2. std:make_pair 这里

我的问题是我可能不知道如何在函数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++。

标签: c++functionc++11

解决方案


你可以和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;

推荐阅读