如何在调用函数时初始化矩阵?

时间:2014-11-19 15:23:03

标签: c++ matrix initialization

我想知道我是否可以这样做:创建一个矩阵,只在调用函数时初始化它的大小:

#ifndef OCCUPANCY_GRID_H
#define OCCUPANCY_GRID_H
#include <math.h>

class OccupancyGrid{

public:

    void update_cell_value(double x, double y, double status) {
        matrix[x_origin+x][y_origin+y]=status;
    }

    void initialize_map(){
        grid_size=100;
        x_origin=grid_size/2;
        y_origin=grid_size/2;
    }

private:
    int grid_size;
    int x_origin;
    int y_origin;
    int const map[grid_size][grid_size] = {-1};
};

#endif

有没有更好的方法呢?

谢谢

1 个答案:

答案 0 :(得分:0)

使用std::vector<std::vector<T>>。理想情况下,您将在构造函数中初始化它,但如果您必须稍后初始化它,请在循环中执行此操作。例如:

class OccupancyGrid {
public:    
    void initialize_matrix(unsigned size){
        matrix.resize(size);
        for(auto& v : matrix)
            v.resize(size);
    }

private:
    std::vector<std::vector<double>> matrix;
};

Boost.MultiArray