我正在尝试使用另一个项目的代码,它们具有这种形式的结构:
struct data{
std::vector<sparse_array> cols,rows;
}
struct sparse_array {
std::vector<unsigned int> idxs;
std::vector<double> values;
void add(unsigned int idx, double value) {
idxs.push_back(idx);
values.push_back(value);
}
}
对于我的代码,我尝试使用以下几行:
data prob;
prob.cols.reserve(num_cols);
prob.rows.reserve(num_rows);
// Some loop that calls
prob.cols[i].add(idx, value);
prob.rows[i].add(idx, value);
当我将值输出prob.rows[i].value[j]
到文件时,我得到全零。但是当我使用resize
而不是reserve
得到我读入的实际值时。有人可以给我一个解释吗?