问题:数据类型为新类的2d向量(嵌套向量)

时间:2019-06-19 14:06:25

标签: c++ qt vector nested

我做了2个课,其中一个是“单元”,另一个是“计算”。

cells是2d向量,数据类型为“ Cells”类 我想将“单元格”的对象-单元格的内容-放在二维矢量“单元格”中

稍后,我将计算matrixPotential和deltaMatrixPotential。

但我什至不能将对象放入2D向量中。

Cells::Cells(double matrixPotential,
             double deltaMatrixPotential)
{
    this->matrixPotential = matrixPotential;
    this->deltaMatrixPotential = deltaMatrixPotential;
}

Calculation::Calculation()
{
    std::vector<std::vector<Cells> > cells;

    for(unsigned long i = 0; i < size; i++){
        for(unsigned long j = 0; j < size; j++){
            Cells contentOftheCell(matrixPotential,
                                   deltaMatrixPotential);
            cells[i][j] = contentOftheCell;
        }
    }
}

我该如何实现? 我可以用普通向量来做,但是在二维向量中似乎是不可能的

1 个答案:

答案 0 :(得分:1)

您需要分配给向量,而不仅仅是写它们,希望在那里有东西要写。

std::vector<std::vector<Cells> > cells;
cells.resize(size);

for(unsigned long i = 0; i < size; i++) {
    cells[i].resize(size)
    for(unsigned long j = 0; j < size; j++) {
        Cells contentOftheCell(matrixPotential,
                               deltaMatrixPotential);
        cells[i][j] = contentOftheCell;
    }
}

此示例通过调整大小分配内存,这比使用vector :: push_back随需添加空间效率更高。首先可以适当地构建向量,这会更好一些,但我将其留给读者练习。