Сокращение означает уменьшение .Учитывая контекст конструктора, я думаю, что вы имеете в виду увеличение .
Ваше решение не совсем в порядке, так как ваш for
-тип изменяет размер векторов, размер которых вы хотите изменить.
Менее важно, но стоит упомянуть: Кроме того, вы делаете ненужную копию пустого вектора для инициализации data_
.Фактически, когда вы вводите тело конструктора, все элементы уже созданы.Наконец, нет необходимости использовать this->
для доступа к членам, если не будет неоднозначности с именем параметра:
Matrix::Matrix(const int &rows, const int &columns) {
data_.resize(rows);
for (auto& col : data_) { // note the & to resize the vector in the vector
col.resize(columns);
}
}
Добавление:
Выможет также предоставить явные параметры для конструкторов членов:
Matrix::Matrix(const int &rows, const int &columns) : data_(rows) {
for (auto& col : data_) {
col.resize(columns);
}
}
Если вам нравится краткость, вы можете даже пойти на:
Matrix::Matrix(const int &rows, const int &columns) : data_(rows, vector<float>(columns)) {
}