我正在编写一个程序,要求我创建一个包含一百万条记录的数组。数组索引是唯一的ID(0百万代表唯一的产品ID)。首先,所有元素都初始化为零。它们会根据销售的产品而增加。
然而,这种方法具有很高的空间复杂度(4 *百万字节)。后来我发现只有某些产品需要经常更新。那么有什么方法可以减少内存使用量并跟踪所有产品?
答案 0 :(得分:1)
如果您不需要频繁更新,则可以将所有结果存储在文件中。每当您更新任何条目时,您只需创建一个临时文件,其中包含所有其他条目以及更新的条目。之后,您只需使用rename(temp,new);
更改临时文件的名称即可。
虽然,一百万条记录不需要那么多内存(只有4兆字节)。所以,你的方法是最好的,也是最简单的方法。
最好的方法(算法)是创建一个哈希表来存储所有条目。但是如果你不是C的专家,那么制作一个哈希表对你来说可能是一个问题。
答案 1 :(得分:1)
这听起来更像是数据库中的表而不是内存中的数组。如果您的用例允许,我会使用数据库。
否则,如果在您的用例中:
如果很大一部分产品不仅不经常使用,但从未使用过,那么你应该研究一下@fatrock92对哈希表的建议。
答案 2 :(得分:0)
最好使用动态分配内存的数组。 使用malloc或realloc可以为您提供更好的内存分配方式 我想你知道如何使用malloc和realloc
答案 3 :(得分:0)
您可以使用link list,因此您可以在需要时添加或更新列表中的元素 您还可以在每个节点中保留上次访问权限,这样您就可以删除最近未使用过的节点。