【问题标题】:C - Ways to free() groups of elements in a hash table?C - 释放()散列表中元素组的方法?
【发布时间】:2020-07-18 18:29:21
【问题描述】:

我目前正在摆弄一个试图解决 2d rubix 立方体的程序。该程序使用哈希表作为各种内存,它保存不同类别的信息并重复运行。从运行到运行,我想释放/删除某些类别的信息,而不是在每次运行结束时释放整个表(这是我目前正在做的)。

我想出了两种方法,但我不确定该使用哪一种。要么我基本上为每个类别制作一个数组/堆栈,我保存一个以后可以释放的指针。或者我为所有不同的类别制作单独的哈希表,并自行决定释放每个类别。

还有其他选择吗?我在某些地方读到了指针池,但我不确定那可能是什么。任何 ide 或有用的 cmets 都会很棒!

【问题讨论】:

  • 可能是一堆指向哈希表的指针,优先于插入时间?
  • “我想释放/删除...”那里的关键词是remove。在从哈希表中删除之前,您无法释放任何内容。从哈希表中删除条目后,只需一行代码即可释放内存。
  • 一个数据结构应该匹配数据的约束。 “哈希”与二维数组的约束不匹配
  • 选择#1:您需要动态分配吗?如果不是:使用静态数组。
  • 谢谢大家的意见!我想我会选择一些静态数组。但我可能会尝试将它们放入锯齿状数组中。将不得不尝试如何使用结构来做到这一点。我们会看看情况如何,否则我可能会发布另一个问题。

标签: c hashtable


【解决方案1】:

您有更多的内存或时间吗?)如果您使用哈希表(包括单独的),那么您需要使用 if 来检查哈希表中的所有元素。这是非常多的时间。我认为最好的方法是在创建后保存对象时创建第二个结构。对于免费的所有表,您需要在简单数组上运行而无需检查,并使用内存设置为零来刷新您的哈希表。你需要更多的记忆,但更有效的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多