使阵列更具内存效率

时间:2017-06-17 22:44:31

标签: c++ arrays pointers memory hashtable

我是一名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

2 个答案:

答案 0 :(得分:1)

中,要走的路是std::vector。每次必须创建一个字段时,您只需将该字段推回到向量中即可完成。

答案 1 :(得分:-3)

对于铆钉,您可以使用相同的字段创建struct RawBucket,但是可以通过i进行分配。即malloc而不是realloc。这是一种低级别的内存管理,但它是一种很好的体验。