使数组的内存效率更高
Making an array more memory-efficient
我是 c++ 初学者,目前我正在开发一个哈希表来适应该语言(线性哈希(。
为此,我创建了一个名为"Bucket"的内部类。
class Bucket {
public:
Bucket* nextBucket;
size_type currentUsedFields;
key_type fields[BUCKET_SIZE];
(...)
}
现在我想知道,我是否可以使它更节省内存,因为这个key_type数组确实会一次分配所有内存,而不是在真正需要的时候。有没有正确的方法可以做到这一点?
我认为如果我不将其复制到数组中,key_type对象将不再有效。 因此,保存指向对象的指针实际上不是一个选项,是吗?
key_type* add(const key_type& key)
我希望你能给我一些提示,如何做更多的内存优化编程。我也期待进一步的改进。这是我写的代码:https://pastebin.com/NnucGm35
在 c++ 中,要走的路是std::vector
。每次必须创建一个字段时,您只需将该字段推回向量即可完成。
对于梭哈,您可以使用相同的字段创建struct RawBucket
,但通过即 malloc 而不是使用 realloc 来分配它。这是一种低级内存管理,但这是很好的体验。
相关文章:
- 内存效率表示最短路径的方法?
- 内存效率:模板与基本数据类型
- 使数组的内存效率更高
- 内存效率-EIGEN :: vectorxd在循环中
- C 数组的内存效率
- 内存效率标准::地图替代
- 内存效率高 map<pair<int,int>, set<int>> alternative
- 效率与内存的权衡
- AES 内存效率
- 关于在C++中使用联合的内存效率
- 对于静态错误字符串,哪个的内存/性能效率更高,或者有替代方案
- 首先创建字符串,然后通过移动语义将其添加到 vector 或在 vector 中创建元素是否具有内存效率
- 5字节QByteArray的内存占用空间.5字节的quint64或QByteArray存储效率更高吗
- 需要进行矩阵运算时的内存效率
- 使用小数据类型是否会减少内存使用(来自内存分配而不是效率)
- 将声明一个全局变量时,做递归内存效率和速度更快
- 提高蓄电池内存使用和效率
- 从内存效率的角度来看,在c++ 11中返回一个字符串OK
- 内存和处理效率高的多维数据结构C++
- Numpy数组与c++向量在内存效率上的对比