使用固定大小和值初始化 g_hash_table

Initialize g_hash_table with fixed size and values

我需要创建一个已知大小的 g_hash_table(我知道密钥的确切数量),并且在开始时,我希望每个值都相同(比如 255)。有没有比做更有效的方法:

for(int temp=0;temp<NUMBER_OF_KEYS;temp++)
{
    g_hash_table_insert(hashtable, key, 255);
}

不,没有。 GHashTable 不支持静态实例化(空的或来自预先散列的数据)。 a bug report 这个问题已经公开 14 年了,但除非有人提出具体的用例(和新补丁),否则它不太可能得到修复。

如果您希望构建常量哈希 table,您可能需要考虑使用 GNU gperf 而不是 GHashTable。 (请注意,尽管名称如此,gperf 与 GLib 完全无关。)

如果您担心一次构建整个哈希 table 的成本,您可以通过仅在您真正第一次阅读它时插入每个条目来分摊成本——在那个时候您知道该条目的默认值为 255。