Genau wie Multiset ist eine binäre Search Tree-Implementierung in STL, gibt es eine RB-Baum oder AVL-Tree-Implementierung verfügbar?Gibt es eine rot-schwarze Baum- oder Avl-Tree-Implementierung in der C++ - Standardbibliothek?
Antwort
Normalerweise würden Sie keinen multiset
als Binärbaum implementieren. Die Verwendung eines würde die Leistungsgarantien des Standards brechen, da der Baum wie eine verkettete Liste aussehen könnte, die kein Einfügen und Entfernen von O (logN) aufweist.
std::set
/std::multiset
/std::map
/std::multimap
werden als RB Baum Typischerweise implementiert, wie es diese Leistungsgarantien hat. Dies ist jedoch nicht erforderlich. Der Standard garantiert nur die Leistung des Containers in verschiedenen Operationen und es ist die Umsetzung, wie dies zu erreichen ist.
Wenn Sie sicherstellen möchten, dass Sie einen RB-Baum verwenden, müssen Sie entweder Ihre Implementierung überprüfen, Ihre eigenen rollen oder eine Bibliothek eines Drittanbieters erhalten, die garantiert, dass es sich um einen RB-Baum handelt.
Vielen Dank. :) – ash
Ein rot-schwarzer Baum ist ein binärer Baum. Ein ausgewogener Binärbaum. –
- 1. Gibt es in der C++ - Standardbibliothek eine reine virtuelle Funktion?
- 2. Gibt es eine logische (boolesche) XOR-Funktion in der C- oder C++ - Standardbibliothek?
- 3. Gibt es eine "Flip" -Funktion in der OCaml-Standardbibliothek?
- 4. Warum gibt es in der Haskell-Standardbibliothek keine Scanl-Funktion?
- 5. Hat Objective-C eine Standardbibliothek?
- 6. Versionen der C++ - Standardbibliothek
- 7. Gibt es einen .Each() - (oder .ForEach()) - Iterator in der .Net-Standardbibliothek?
- 8. Inneres Arbeiten der C-Standardbibliothek
- 9. Gibt es einen Grund, warum es nicht std :: identity in der Standardbibliothek gibt?
- 10. Gibt es eine Präprozessor-Direktive zum Erkennen der C++ 11-Standardbibliothek?
- 11. C++ Standardbibliothek Ausnahmeliste?
- 12. fgets c standardbibliothek funktion
- 13. Standardbibliothek STL in C++
- 14. Gibt es ein C++ - Äquivalent zu Rusts "std :: mem :: drop" in der Standardbibliothek?
- 15. Gibt es eine C++ 11 CSPRNG?
- 16. Gibt es STL-Header, die nicht Teil der C++ - Standardbibliothek sind?
- 17. Gibt es in Perl eine N-äre-Baum-Implementierung?
- 18. Verwendung von C-Strings in der C++ - Standardbibliothek
- 19. Gibt es eine praktische Verwendung für die datetime.timezone-Klasse in der Python 3-Standardbibliothek? nur
- 20. Gibt es in der Rust-Standardbibliothek die Möglichkeit, eine Datei von einer URL herunterzuladen
- 21. Idris: Ausblenden von Datentypen aus der Standardbibliothek oder nicht Importieren der Standardbibliothek
- 22. Dokumentationsbeispiel in der Python-Standardbibliothek
- 23. Hat Fortran eine Standardbibliothek?
- 24. Slicing eine Scheibe mit der Standardbibliothek
- 25. Wo sind die Header der C++ - Standardbibliothek
- 26. Welche Ausnahmeklassen befinden sich in der C++ - Standardbibliothek?
- 27. Gibt es eine Python-Bibliothek oder API für Deep Learning?
- 28. Gibt es nur eine "Nachrichtenpumpe" oder viele?
- 29. Gibt es eine faule "String.Split" in C#
- 30. Gibt es ein Tab-Äquivalent von std :: endl in der Standardbibliothek?
std :: map ist ein rot/schwarzer Baum. Der Standard sagt nicht, dass es eins sein muss, aber die Leistungsgarantien machen es unwahrscheinlich, dass etwas anderes verwendet wird. –
Ziemlich sicher, dass die meisten Standard-Bibliothek Implementierungen RB-Bäume für alle vier (multi-) Set | map verwenden. Der Standard spezifiziert jedoch nicht die Implementierung. – Zulan