我正在创建一个存储在嵌套向量中的巨大矩阵:
typedef vector<vector<pair<unsigned int, char>>> Matrix;
外部向量最终将包含约 400.000 个向量,每个向量最多包含约 220 对(大多数包含较少)。这需要大约 1GB 的 RAM,并且是这样完成的:
Matrix matrix;
for (unsigned int i = 0; i < rows; i++) {
vector<pair<unsigned int, char>> row;
for (unsigned int j = 0; j < cols; j++) {
// ...calculations...
row.push_back( pair<unsigned int, char>(x, y) );
}
matrix.push_back(row);
}
前 20% 的速度非常快,但外部向量增长得越大,整个过程的速度就越慢。我很确定可以进行一些优化,但我不是该领域的专家。有什么简单的技巧可以加快速度吗?或者我的尝试有什么重大错误?