Как инициализировать вектор векторов в структуре?
Я столкнулся с проблемой и не могу разобраться, как инициализировать матрицу NxN в C++ с использованием векторов векторов. Я пытаюсь создать матрицу, объявив ее следующим образом:
vector<vector<int>> A;
Но как правильно инициализировать её размер? Я пробовал разные варианты, но неудачно. Например, это не сработало:
A = new vector(dimension);
И такой вариант тоже не сработал:
A = new vector(dimension, vector<int>(dimension));
Можете подсказать, как правильно инициализировать вектор векторов фиксированного размера?
2 ответ(ов)
В C++ вы используете new
для выполнения динамического выделения памяти. Он возвращает указатель на динамически выделенный объект.
В вашем случае нет необходимости использовать new
, поскольку A
является локальной (автоматической) переменной. Вы можете просто инициализировать A
с помощью конструктора:
vector<vector<int>> A(dimension, vector<int>(dimension));
Это создаст A
как объект на стеке, что предпочтительнее в большинстве случаев, так как освобождение памяти произойдет автоматически при выходе из области видимости.
Конечно, вот перевод с учетом стиля ответа на StackOverflow.com:
#include <vector>
// ...
std::vector<std::vector<int>> A(размерность, std::vector<int>(размерность));
Обратите внимание, что размерность
— это переменная, указывающая на размер двумерного вектора.
Как проще всего инициализировать std::vector с жестко заданными элементами?
Как получить размер std::vector в формате int?
Как объявить вектор-участник того же класса?
Как удалить элемент из std::vector<> по индексу?
`unsigned int` против `size_t`: когда и что использовать?