Один связанный список в стандартной библиотеке C ++ или других широко используемых библиотек?
-
25-09-2019 - |
Вопрос
Похоже, что есть только вдвойне связанный список (но нет единообразного списка) в стандартной библиотеке 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)