Lista ligada individual na biblioteca padrão C ++ ou em outras bibliotecas amplamente usadas?
-
25-09-2019 - |
Pergunta
Parece que existe apenas uma lista duplamente vinculada (mas nenhuma lista vinculada) na biblioteca padrão C ++, certo? Existe alguma biblioteca C ++ amplamente usada com lista de vinculação individual?
Solução
Há Slist, que é uma extensão 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;
}
Outras dicas
Existe o slist
Classe do Boost que é uma implementação de lista ligada individualmente.
Somente para referência...
O tempo passou e o C ++ 11 nos trouxe o std :: forward_list O contêiner que é implementado como uma lista de ligações individuais e essencialmente não tem despesas gerais em comparação com sua implementação em C.
Comparado com std::list
Este contêiner fornece mais armazenamento com eficiência de espaço quando a iteração bidirecional não é necessária.
Aviso: faltando push_back
método (std :: forward_list e std :: forward_list :: push_back)