Мой классСлияния вектор векторов
class aMatrix {
private:
std::vector<std::vector<double> > mat;
unsigned rows;
unsigned cols; ...}
Я хочу, чтобы объединить две матрицы с использованием метода
aMatrix aMatrix::merge(const aMatrix& ob){
this->mat.reserve(this->mat.size()+ob.mat.size());
this->cols+=ob.cols;
this->mat.insert(this->mat.end(), ob.mat.begin(),ob.mat.end());
return *this;
}
, но он не работает. Любые идеи, как заставить его работать?
изменить: нет ошибок. он просто добавляет столбец ~ 0, а затем значения, отличные от ob.mat.
редактировать:
aMatrix mat1(3,3);
mat1(0, 0) = 1;
mat1(0, 1) = 1;
mat1(0, 2) = 1;
mat1(1, 0) = 2;
mat1(1, 1) = 3;
mat1(1, 2) = 5;
mat1(2, 0) = 11;
mat1(2, 1) = 0;
mat1(2, 2) = 5;
aMatrix ones(3,3);
ones(0,0)=1;
ones(1,1)=1;
ones(2,2)=1;
mat1.merge(ones);
результат:
1, 1, 1, 1.11319e-308, 2, 3,
2, 3, 5, 1.11318e-308, 11, 0,
11, 0, 5, 1.11317e-308, 1, 0,
редактировать: Как заставить его работать в таких обозначениях?
// Parameter Constructor
aMatrix::aMatrix(unsigned _rows, unsigned _cols, const double& _initial) {
mat.resize(_rows);
for (unsigned i = 0; i < mat.size(); i++) {
mat[i].resize(_cols, _initial);
}
rows = _rows;
cols = _cols;
}
Редактировать: ОК, теперь это работает. правильный код:
aMatrix& aMatrix::merge(const aMatrix& ob){
this->mat.reserve(this->mat.size()+ob.mat.size());
this->cols+=ob.cols;
for (unsigned i = 0; i < this->mat.size(); i++) {
this->mat[i].insert(this->mat[i].end(), ob.mat[i].begin(),ob.mat[i].end());
}
return *this;
}
спасибо :)
Какая ошибка? – martin
вы можете предоставить минимальный рабочий код, который воспроизводит ошибку? – coyotte508
Кроме того: вы, вероятно, предназначались для возвращаемого значения как 'aMatrix &', а не 'aMatrix'. – Hurkyl