2017-02-21 2 views
0

Ich muss eine g_hash_table einer bekannten Größe (ich kenne die genaue Anzahl der Schlüssel) erstellen, und am Anfang möchte ich, dass jeder Wert derselbe ist (sagen wir 255). Gibt es eine effizientere Art und Weise als tun:Initialisiere g_hash_table mit fester Größe und Werten

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

Antwort

2

Nein, es ist nicht. GHashTable unterstützt keine statische Instanziierung (entweder leer oder aus vorgehashten Daten). Seit 14 Jahren ist a bug report offen, aber es ist unwahrscheinlich, dass es repariert wird, wenn nicht jemand einen konkreten Anwendungsfall (und einen neuen Patch) vorbringt.

Wenn Sie versuchen, eine konstante Hash-Tabelle zu erstellen, möchten Sie vielleicht mit GNU gperf statt GHashTable suchen. (Beachten Sie, dass gperf trotz des Namens keine Beziehung zu GLib hat.)

Wenn Sie über die Kosten für den Aufbau der gesamten Hash-Tabelle auf einmal besorgt sind, können Sie die Kosten amortisieren, indem Sie nur jeden Eintrag einfügen, wenn Sie tatsächlich kommen um es zum ersten Mal zu lesen - an diesem Punkt wissen Sie, dass der Standardwert für den Eintrag 255 sein wird.

+0

Vielen Dank, ich werde Int gperf suchen – gabrielesani

Verwandte Themen