使数组的内存效率更高

Making an array more memory-efficient

本文关键字:效率 内存 数组      更新时间:2023-10-16

我是 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 来分配它。这是一种低级内存管理,但这是很好的体验。