使用指向指向矢量的指针来构造矩阵是一个好主意

时间:2014-01-24 02:39:46

标签: c++

我在新公司中广泛地看到了C ++代码,该代码使用指向向量的指针来存储数据,我觉得它并不直观。使用这种语法是一种常见做法吗?

vector <T>** data;
data = new vector<T>*(colSize);
for (int i=0 ; i < colSize; ++i)
{
   data[i] = new vector<T>(); 
}

2 个答案:

答案 0 :(得分:0)

不,您只需vector使用vector(如果尺寸已修复,则为std::array):

vector<vector<T>> data;

答案 1 :(得分:0)

更常见的做法是:

    int colSize = 10;
    int rowSize = 12;
    typedef int T;

    std::vector<std::vector<T> > data(colSize);
    std::for_each ( data.begin(), data.end(), 
        [rowSize] (std::vector<T>& row)
    {
        row.resize(rowSize);
    });

但是,正如通常用“矩阵”所评论的那样,我们总是指一个固定的行大小(如示例所示),并使用单个1D底层数组或vector并提供一个接口来提供{{1 (或2D或其他)查​​找。