concatenata semplice elenco nella libreria standard C ++ o altre librerie ampiamente utilizzati?

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

Domanda

Sembra che ci sia la lista unica doppiamente legata (ma non singolarmente lista collegata) nella libreria standard C ++, giusto? C'è qualche C diffuso ++ librerie con la lista concatenata?

È stato utile?

Soluzione

slist , che è un'estensione 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;
}

Altri suggerimenti

Non è la classe slist da Boost che è un'implementazione lista concatenata.

Solo per riferimento ...

Il tempo è passato e C ++ 11 ci ha portato il std :: forward_list contenitore che viene implementata come lista semplicemente legata ed essenzialmente non ha alcun sovraccarico rispetto alla sua implementazione in C.

Rispetto a std::list questo contenitore fornisce più efficiente dello spazio di archiviazione quando non è richiesta iterazione bidirezionale.

Attenzione: manca il metodo push_back ( std :: forward_list e std :: :: forward_list push_back )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top