Ответ 1
std::vector
имеет конструктор заполнения, который создает вектор из n элементов и заполняет указанное значение. a
имеет тип std::vector<std::vector<int>>
, что означает, что он является вектором вектора. Следовательно, ваше значение по умолчанию для заполнения вектора - это сам вектор, а не int
. Поэтому второй вариант является правильным.
std::vector<std::vector<int>> array_2d(rows, std::vector<int>(cols, 0));
Это создает массив строк * cols 2D, где каждый элемент равен 0. Значение по умолчанию std::vector<int>(cols, 0)
, что означает, что каждая строка имеет вектор, который имеет cols
число элементов, каждое из которых равно 0.