Liste in der C ++ Standardbibliothek oder andere weit verbreitete Bibliotheken einzeln verknüpft?
-
25-09-2019 - |
Frage
Es scheint, dass es nur doppelt verknüpfte Liste ist (aber keine Liste einzeln verbunden ist) in der C ++ Standard-Bibliothek, nicht wahr? Gibt es eine weit verbreitete C ++ Bibliotheken mit einfach verketteten Liste?
Lösung
Es gibt slist , die eine SGI-Erweiterung (__gnu_cxx::slist
)
#include <iostream>
#include <iterator>
#include <ext/slist>
int main(int argc, char** argv) {
__gnu_cxx::slist<int> sl;
sl.push_front(1);
sl.push_front(2);
sl.push_front(0);
std::copy(sl.begin(), sl.end(), // The output is 0 2 1
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
return 0;
}
Andere Tipps
Es ist die slist
Klasse von Boost, die eine einfach verkettete Liste Implementierung ist.
Gerade als Referenz ...
Die Zeit ist vergangen und C ++ 11 hat uns die std :: forward_list Container, der als einfach verkettete Liste implementiert ist und im wesentlichen nicht über einen zusätzlichen Overhead im Vergleich zu seiner Implementierung in C.
Im Vergleich zu std::list
dieser Behälter platzsparender Lagerung liefern, wenn die bidirektionale Iteration ist nicht erforderlich.
Achtung: fehlende push_back
Methode ( std :: forward_list und std :: forward_list :: push_back )