individualmente lista en la biblioteca de C ++ estándar u otras bibliotecas usadas ampliamente ligado?
-
25-09-2019 - |
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?
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 )