我正在编写一个包含矩阵(具有双值)的类,表示为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;
}
Run Code Online (Sandbox Code Playgroud)
该resize()方法是否使用零自动填充向量?我的实施是否正常?
新元素采用vector成员的默认值,如果使用resize带有两个参数的重载,则采用特定值.
void resize(
size_type _Newsize,
Type _Val
);
Run Code Online (Sandbox Code Playgroud)
在您的情况下,默认vector<double>值为空- 如果这不是您想要的,请将您想要放在那里的内容传递给上面的重载.
不修改现有元素.