使用C ++中参数的大小创建2D数组 [英] Create 2D array using size from parameters in C++

查看:95
本文介绍了使用C ++中参数的大小创建2D数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个简单的2D数组,其大小是该方法传递的参数.在C#中,我们将具有以下内容:

I am trying to create a simple 2D array with the size being the parameters passed by the method. In C# we would have something like this:

float[,] GenerateNoiseMap(int mapWidth, int mapHeight){
     float noiseMap[,] = new float[mapWidth, mapHeight];
     return noiseMap;
}

有人知道如何创建2D数组并用C ++返回它吗? 到目前为止,编译器给我的错误是大小必须为常数,并且我希望这些值等于方法的参数.

Any idea how I can create a 2D array and return it in C++? So far the compiler gives me an error that the size has to be a constant value, and I want the values to be what the method parameters are

推荐答案

我喜欢围绕一维矢量的简单包装:

I like a simple wrapper around a 1D vector:

#include <vector>

class Matrix
{
private:
    size_t rows, columns;
    std::vector<double> matrix;
public:
    Matrix(size_t numrows, size_t numcols) :
            rows(numrows), columns(numcols), matrix(rows * columns)
    {
    }

    double & operator()(size_t row, size_t column)
    {
        return matrix[row * columns + column]; // note 2D coordinates are flattened to 1D
    }

    double operator()(size_t row, size_t column) const
    {
        return matrix[row * columns + column];
    }

    size_t getRows() const
    {
        return rows;
    }
    size_t getColumns() const
    {
        return columns;
    }
};

std::vector

用法:

Matrix noiseMap(mapWidth, mapHeight);

这篇关于使用C ++中参数的大小创建2D数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆