我正在写一个持有矩阵(双值)的类,表示为vector<vector<double>>
;矢量调整大小()自动填充
我想实现operator=
,用给定的稀疏矩阵的细节重新填充我的矩阵。我写了下面的代码:
RegMatrix& RegMatrix::operator=(const SparseMatrix rhs){
if(*this != rhs){
_matrix.clear();
_matrix.resize(rhs.getRow());
int i;
for(i=0;i<rhs.getRow();++i){
_matrix.at(i).resize(rhs.getCol());
}
for(i=0;i<rhs.getSize();++i){
Element e = rhs.getElement(i);
_matrix[e._row][e._col] = e._val;
}
}
return *this;
}
是否resize()
方法自动填充用零向量? 我的执行是否正常?
所以,如果我想的姿色RowXCol的二维向量,每个内部向量的元素将有0值,我应该更改行,以便它看起来像这样:_matrix.at(i).resize(rhs.getCol(),0); ? – limlim 2010-10-05 17:52:14
@limlim:你不需要改变它。你已经隐含地*传递了这个零。你也可以明确地传递这个零,但它不会改变任何东西。如果你相信通过这个0明确地让你的代码更清晰,那么你可以继续并把它放在那里。但它在功能方面没有任何区别。 – AnT 2010-10-05 18:06:47
如果我没有弄错,调整大小不会使现有元素为零。如果这就是你想要做的,使用分配(查看我的答案更多)。 – JoshD 2010-10-05 18:09:32