Wie lösche ich ein Element aus hsearch

Ich verwende die Funktion hsearch_r, die von der GNU C-Bibliothek bereitgestellt wird.

Ich sehe, dass ich zwar mit hsearch_r Elemente zur HASH-Tabelle hinzufügen und die Aktion als ENTER übergeben kann, aber keine Möglichkeit sehe, ein Element oder einen Eintrag aus der HASH-Tabelle zu entfernen.

Weiß jemand einen Grund, warum das so ist?

Kann ich Folgendes tun, um meine Löschfunktion zu implementieren.

Ich suche zuerst mit hsearch_r und der Aktion FIND danach. Wenn ich dann einen Zeiger auf das hash_element bekomme, dann befreie ich es. Wird es funktionieren? Was nützt eine Hash-Bibliothek, wenn ich nur Elemente hinzufügen und danach suchen kann? Warum wird keine Löschroutine bereitgestellt?

Ich habe versucht, nach dem Quellcode der hsearch-Bibliothek zu googeln und konnte ihn nicht finden. Kann mich auch jemand darauf hinweisen?

http: //linux.die.net/man/3/hcreate_

BEARBEITEN

Ich sehe auch, dass, wenn ich die hsearch_r zweimal mit der Aktion ADD aufrufe, sie weder einen Fehler auslöst noch den Hash mit dem neuen Wert aktualisiert. Das ist komisch. Dies bedeutet, dass hsearch intern KEINE Ersetzungsfunktionalität implementiert und wir dies selbst tun müssen, d. H. Zuerst eine Suche durchführen und dann, falls vorhanden, den ersten Eintrag löschen und dann einen neuen hinzufügen. Dazu müssten wir jedoch ein Element aus dem Hash löschen, was ich nicht kann.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage