【发布时间】:2017-02-21 16:09:39
【问题描述】:
我需要创建一个已知大小的 g_hash_table(我知道键的确切数量),并且在开始时,我希望每个值都相同(比如说 255)。有没有比做更有效的方法:
for(int temp=0;temp<NUMBER_OF_KEYS;temp++)
{
g_hash_table_insert(hashtable, key, 255);
}
【问题讨论】:
我需要创建一个已知大小的 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 年,但除非有人提出具体的用例(和新补丁),否则它不太可能得到修复。
如果您希望构建一个常量哈希表,您可能希望使用GNU gperf 而不是GHashTable。 (请注意,尽管有名称,gperf 与 GLib 完全无关。)
如果您担心一次构建整个哈希表的成本,您可以通过仅在您第一次实际阅读每个条目时插入每个条目来分摊成本 - 那时您知道默认值条目将是 255。
【讨论】: