分配一个(固定大小)矢量<矢量<double>>以便高效访问并添加它们?
Allocate a (fixed size) vector<vector<double>> for efficient access and add them?
我正在实现一种算法,该算法使用相当大的vector(vector(double((类型进行存储;预分配后不会添加或删除任何元素。我想确保元素访问尽可能快,我还需要添加和扩展其中的几个(元素(。最好的方法是什么?
以下是我(天真(代码的相关部分,我怀疑它们是否有效:
vector<vector<double>> z;
vector<vector<double>> mu;
vector<vector<double>> temp_NNZ;
..
for(int i = 0; i < init.valsA.size(); ++i){
z.push_back({});
mu.push_back({});
temp_NNZ.push_back({});
for(int j = 0; j < init.valsA[i].size(); ++j){
z[i].push_back(0);
mu[i].push_back(0);
temp_NNZ[i].push_back(0);
}
}
..
for(int i = 0; i < z.size(); ++i){
for(int j = 0; j < z[i].size(); ++j){
z[i][j] = temp_NNZ[i][j] - mu[i][j]/rho - z[i][j];
}
}
有两种方法可以做到这一点:vector::resize
将创建所有元素,并对它们进行值初始化(或者如果你给它一个初始值,则复制初始化它们(,vector::reserve
将允许您提前分配所需的内存量而无需初始化它(这可能更有效(。在第一种情况下,您必须将最终值复制到已经存在的元素(z[i] = x
(,而在另一种情况下,您必须像使用当前代码一样创建元素(z.push_back(x)
(。
相关文章:
- 分段故障(堆芯转储)矢量
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 将二维矢量传递给类
- 读取文件并输入到矢量中
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 无法通过空白将文本文件行分隔为矢量
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 正在将csv文件读取为双精度矢量
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何通过 getter 函数删除矢量的元素?
- 如何在C++中将数组转换为矢量指针
- 在C++中将矢量转换为嵌套地图
- C++矢量迭代
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 将矢量<T>转换为矢量<数组<T>>
- 指针或结构的矢量
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一