================================ Weiterer Ausbau der Hash-Tabelle [TOC] ================================ Es ist naheliegend, noch einige Anpassungen und Ergänzungen vorzunehmen: * Die Methode _insert_ sollte wie die Originale der STL ein `std::pair` bestehend aus einem Iterator und einem `bool`-Wert zurückgeben, wobei der `bool`-Wert angibt, ob eingefügt wurde und der Iterator entweder auf das bereits vorhandene oder eben neu eingefügte Objekt verweist. * Die entsprechenden Klassen der STL bieten auch eine _erase_-Methode an, bei der ein Iterator angegeben wird und dann das entsprechende Element aus der Datenstruktur gelöscht wird. Wie kann das mit konstantem Aufwand umgesetzt werden? Ist es dazu notwendig, die eigentliche Datenstruktur dazu zu verändern oder reicht es aus, dem Iterator-Objekt mehr Informationen hierzu zu geben. Wenn _erase_ (also eine Methode von _Hash_) auf Interna der _Iterator_-Klasse zugreifen möchte, ist eine `friend Hash`-Deklaration innerhalb der _Iterator_-Klasse notwendig. * Die Container-Klassen der STL bieten eine Methode _size_ an, mit der die Zahl der Elemente zurückgegeben wird. Auch dies kann mit konstantem Aufwand erreicht werden. * Bei der Verwendung unserer Iteratoren-Klasse ist zwar `(*it).member` zulässig, aber nicht `it->member`. Letzteres wird nur möglich, wenn ein `operator->` deklariert wird, der einen Zeiger auf das Objekt zurückgibt. Aufgabe ======= Setzen Sie die obigen Erweiterungen sukzessive um und testen Sie diese. Vorlage ======= :import: session08/step02/Hash.hpp [fold] :navigate: up -> doc:index back -> doc:session08/page04 next -> doc:session08/page06