[英]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 。 這有點低級的內存管理,但這是很好的經驗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.