簡體   English   中英

從 function 返回矩陣,長度可變

[英]Return matrix from function with variable lenght

我想從 function 返回矩陣,但我找不到方法。 我找到了一些方法,但它們不能用於 VLA。 我讀過有關使用std::vector的信息,但這也沒有用。

int gengrid(int gridsize)
{
    gridsize = 10 - 1;
    int grid[gridsize+3][gridsize+3];
    srand(time(NULL));

    int count = 0;

    std::fill_n(grid[0], 12, 0);
    for(int i = 1; i < gridsize + 2; i++)
    {
        grid[i][0] = 0;
        for(int j = 1; j < gridsize + 2; j++)
        {
            grid[i][j] = rand()%2;
        }
        grid[i][gridsize+2] = 0;
    }
    std::fill_n(grid[gridsize+2], gridsize + 3, 0);

    return grid;
}

好的,我找到了我的解決方案。

我用初始化向量矩陣

static std::vector<std::vector<int>> grid(gridsize+3, std::vector<int>(gridsize+3));

默認情況下為所有元素設置0 (老實說,我不知道它是如何工作的,也許有人會評論這種行為的解釋。)

完整代碼在這里:

#include <iostream>
#include <time.h>
#include <vector>

std::vector<std::vector<int>> gengrid(int gridsize)
{
    gridsize = 10 - 1;
    static std::vector<std::vector<int>> grid(gridsize+3, std::vector<int>(gridsize+3));//[gridsize+3][gridsize+3];
    srand(time(NULL));

    int count = 0;

    for(int i = 1; i < gridsize + 2; i++)
    {
        grid[i][0] = 0;
        for(int j = 1; j < gridsize + 2; j++)
        {
            grid[i][j] = rand()%2;
        }
        grid[i][gridsize+2] = 0;
    }

    return grid;
}

int main()
{
    std::vector<std::vector<int>> grid = gengrid(10);

    for(int i = 0; i < 9 + 3; i++)
    {
        for(int j = 0; j < 9 + 3; j++)
        {
            std::cout << grid[i][j];
        }
        std::cout << std::endl;
    }

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM