Liste in der C ++ Standardbibliothek oder andere weit verbreitete Bibliotheken einzeln verknüpft?

StackOverflow https://stackoverflow.com/questions/2800064

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?

War es hilfreich?

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 )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top