2D-матрица против 2D-вектора

ВСТУПЛЕНИЕ

2D-матрица, также известная как массив массивов, имеет свой размер, выделенный в начале, следовательно, это статический режим представления строки-столбца.
2D-вектор, также известный как вектор векторов, представляет собой динамически растущие массивы, в которых пользователь не определяет начальный размер того, сколько строк и столбцов будет существовать, это динамический режим представления строк и столбцов.

СОЗДАНИЕ И ВСТАВКА В 2D МАТРИЦУ

int matrix[3][4]; // Размер был выделен в начале.
Здесь количество строк = 3, а количество столбцов = 4.

Чтобы заполнить каждую строку и столбец, мы пишем код как:

for (int i = 0; i < 3; i++) // This loop is run for each row.
{
  for(int j = 0; j < 4; j++) // This loop is run for each column
    {
    	matrix[i][j] = i+j; // We are inserting (value = i+j) into i-th row & j-th column.
    }
}

Мы будем проходить 0-ю строку, 1-ю строку, 2-ю строку (индексирование на основе 0) и 0-й, 1-й, 2-й, 3-й столбец соответственно для каждой строки.
Предположим, мы находимся в 1-й строке — 2-й столбец означает матрицу[1][2]поэтому, как только приведенный выше код будет выполнен, он будет иметь значение 3 (т.е. матрица[1][2] = 3).
1.jpg
2.jpg

СОЗДАНИЕ И ВСТАВКА В 2D ВЕКТОРЫ

vector < vector <int> > vec; // Инициализация вектора векторов
Здесь мы определили, что будет вектор векторов ( 1 вектор сам по себе является динамическим массивом, поэтому вектор векторов означает список динамически растущих массивов).

    vector<vector<int> > vec;
    int rows = 3;
    for (int i = 0; i < rows; i++) {
        vector<int> v1;     // Vector to store column elements
        int columns = i+2;  // We are adding i+2 columns in each row, hence dynamic.
        for (int j = 0; j < columns; j++) {
            v1.push_back(20);
        }
        vec.push_back(v1);  // Pushing back above 1D vector to create the 2D vector.
    }

Для приведенного выше кода внешний цикл выполняется 3 раза, т.е. 3 строки.
Но внутренний цикл выполняется i+2 раза, что означает
строка = 0 , столбцы = 0+2 = 2 (0-я строка имеет 2 столбца)
строка = 1, столбцы = 1+2 = 3 (1-я строка имеет 3 столбца)
строка = 2, столбцы = 2+2 = 4 (2-я строка имеет 4 столбца)
Просто для понимания цели мы вставляем значение = 20 в каждую позицию.
3.jpg

Основное преимущество 2d-векторов заключается в том, что вы назначаете память только в соответствии с вашими требованиями и не обязаны выделять фиксированные пространства, даже если они не требуются, в отличие от 2d-массивов, размер которых инициализирован в начале.

В приведенных выше примерах у вас теперь есть идея, что 2d-массивы означают нет. столбцов фиксируются для каждой строки, которая не соответствует двумерным векторам.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *