Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在函数的输出中配对2D数组和整数?_C++_Function_C++11 - Fatal编程技术网

C++ 如何在函数的输出中配对2D数组和整数?

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

我正在努力从函数中创建多变量输出:我想要返回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; 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;