2017-02-21 27 views
0

Мне нужно создать g_hash_table известного размера (я знаю точное количество ключей), и в начале я хочу, чтобы каждое значение было одинаковым (допустим, 255). Есть ли более эффективный способ, чем делать:Инициализировать g_hash_table с фиксированными размерами и значениями

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

ответ

2

Нет, не существует. GHashTable не поддерживает статический экземпляр (пустой или из предварительно хешированных данных). Об этом было открыто a bug report 14 лет, но вряд ли он будет исправлен, если кто-то не выдвинет конкретный вариант использования (и новый патч).

Если вы хотите построить постоянную хеш-таблицу, вы можете посмотреть на использование GNU gperf вместо GHashTable. (Обратите внимание, что, несмотря на название, gperf полностью не связано с GLib.)

Если вас беспокоит стоимость создания всей хеш-таблицы сразу, вы можете амортизировать затраты, вставив каждую запись, когда вы действительно придете чтобы прочитать это в первый раз - в этот момент вы знаете, что значение по умолчанию для записи будет 255.

+0

Большое спасибо, я посмотрю int gperf – gabrielesani

 Смежные вопросы

  • Нет связанных вопросов^_^