Задача: 2d Vector (вложенный Vector) с типом данных нового класса - PullRequest
0 голосов
/ 19 июня 2019

Я сделал 2 класса, один из которых "Ячейки", а другой - "Расчет".

ячейки - это двумерный вектор с типом данных класса "Ячейки", и я хочу поместить объект "Ячейки" - содержимое ячейки - в двумерный вектор "Ячейки"

позжея буду рассчитывать matrixPotential и deltaMatrixPotential.

но я даже не могу поместить объект в 2-й вектор.

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;
        }
    }
}

Как я могу сделать это возможным?Я мог бы сделать это в нормальном векторе, но это невозможно в 2d векторе

1 Ответ

1 голос
/ 19 июня 2019

Вам нужно выделить ваши векторы, а не просто написать им, надеясь, что там есть что-то, что можно написать.

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 для добавления пробела по мере продвижения. Во-первых, можно правильно построить ваши векторы, что было бы немного лучше, но я оставляю это как упражнение для читателя.

...