我試圖使用其它項目的代碼,他們有這種形式的結構:矢量調整大小VS儲備嵌套向量
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
時,我得到了我閱讀的實際值。有人能給我一個解釋嗎?
見類似的問題:選擇向量之間::調整()和載體::儲備()(http://stackoverflow.com/q/7397768/ 1168156)和[std :: vector :: resize()與std :: vector :: reserve()](http://stackoverflow.com/q/13029299/1168156) – LihO 2013-02-24 02:10:14