Один связанный список в стандартной библиотеке C ++ или других широко используемых библиотек?

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

Вопрос

Похоже, что есть только вдвойне связанный список (но нет единообразного списка) в стандартной библиотеке C ++, верно? Есть ли какие-либо широко используемые библиотеки C ++ с одним свяженным списком?

Это было полезно?

Решение

Есть прилип, который является расширением 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;
}

Другие советы

Здесь slist Класс от Boost, который является однонадельно связанным списком.

Только для справки ...

Время прошло, а C ++ 11 привел нас STD :: Forev_List Контейнер, который реализуется как по отдельно связанным списком, и по существу, не имеет никакого налога по сравнению с его реализацией в C.

В сравнении с std::list Этот контейнер обеспечивает больше космического хранения, когда не требуется двунаправленная итерация.

Предупреждение: отсутствует push_back метод (std :: forev_list и std :: forep_list :: push_back)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top