individualmente lista en la biblioteca de C ++ estándar u otras bibliotecas usadas ampliamente ligado?

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

Pregunta

Parece que hay lista única doblemente enlazada (pero ninguna lista enlazada por separado) en la biblioteca C ++ estándar, ¿verdad? ¿Hay alguna C ++ ampliamente usado bibliotecas con lista enlazada?

¿Fue útil?

Solución

Hay slist , que es una extensión SGI (__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;
}

Otros consejos

No es la clase slist de impulso que es una implementación lista enlazada.

Sólo como referencia ...

El tiempo ha pasado y C ++ 11 nos ha llevado a la std :: forward_list contenedor que se implementa como una lista simplemente enlazada y, esencialmente, no tiene ningún tipo de gastos en comparación con su implementación en C.

En comparación con std::list este contenedor proporciona más espacio de almacenamiento eficiente cuando no se necesita iteración bidireccional.

Advertencia: falta de método push_back ( std :: forward_list y std :: :: forward_list push_back )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top