我有一个 vector 的 vector ,我正在尝试按如下方式初始化它:
vector<vector<float> > matrix(numberOfRows, vector<float> (numberOfCols));
但是这条线持续大约 0.89,其中 numberOfRows 和 numberOfCols 是:
const uint32_t numRows = 10000;
const uint32_t numCols = 20000;
而使用以下代码初始化动态数组需要 0.04 秒才能执行:
float **matrix = new float*[numberOfRows];
for (size_t i = 0; i < numberOfRows; ++i)
matrix[i] = new float[numberOfCols];
我做错了什么吗?有没有更快的方法来初始化该 vector ?
编辑:
至于问题:
我使用 g++-4.5 来测试使用默认标准的 O3 优化级别。
最佳答案
不同之处在于 vector 被初始化为零,而动态数组则没有。有 2 亿个值,这是值得注意的。
您可以选择延迟 vector 行的初始化,直到您有实际值来分配它们,方法是在初始化时不扩展列。
关于c++ - vector of vector的初始化很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424698/