Biblioteka C ++ - <deque>
Wprowadzenie
Deque to akronim od Dpodwójny Ended Queue. Jest to kontener sekwencji, który może zmieniać rozmiar w czasie wykonywania. Kontener to obiekt przechowujący dane tego samego typu. Kontenery sekwencji przechowują elementy ściśle w kolejności liniowej.
Elementy deque mogą być rozproszone w różnych fragmentach pamięci. Kontener przechowuje niezbędne informacje, aby umożliwić bezpośredni dostęp do dowolnego elementu w stałym czasie. W przeciwieństwie do wektorów, deque nie ma gwarancji przechowywania całego swojego elementu w ciągłych lokalizacjach pamięci. Dlatego nie pozwala na bezpośredni dostęp do danych przez przesunięcie wskaźników. Ale umożliwia bezpośredni dostęp do dowolnego elementu za pomocą operatora indeksu [].
Deque może się kurczyć lub rozszerzać w razie potrzeby z obu końców w czasie wykonywania. Zapotrzebowanie na miejsce jest automatycznie wypełniane przez wewnętrzny podzielnik . Deque zapewnia podobną funkcjonalność jak wektory, ale zapewnia skuteczny sposób wstawiania i usuwania danych z dowolnego końca.
Ważne są również deques o zerowej wielkości. W takim przypadku deque.begin () i deque.end () wskazują na tę samą lokalizację. Ale zachowanie wywołania front () lub back () jest niezdefiniowane.
Definicja
Poniżej znajduje się definicja std :: deque z pliku nagłówkowego <deque>
template < class T, class Alloc = allocator<T> > class deque;
Parametry
T - Typ zawartego elementu.
T można zastąpić dowolnym innym typem danych, w tym typem zdefiniowanym przez użytkownika.
Alloc - Typ obiektu alokatora.
Domyślnie używany jest szablon klasy alokatora, który definiuje najprostszy model alokacji pamięci i jest niezależny od wartości.
Typy członków
Następujące typy elementów członkowskich mogą być używane jako parametry lub zwracane typy przez funkcje składowe.
Sr.No. | Typy członków | Definicja |
---|---|---|
1 | typ wartości | T (pierwszy parametr szablonu) |
2 | Alokator_typ | Alloc (drugi parametr szablonu) |
3 | odniesienie | typ wartości& |
4 | const_reference | const value_type & |
5 | wskaźnik | typ wartości* |
6 | const_pointer | const value_type * |
7 | iterator | iterator dostępu swobodnego do typ_wartości |
8 | const_iterator | iterator dostępu swobodnego do const value_type |
9 | reverse_iterator | std :: reverse_iterator <iterator> |
10 | const_reverse_iterator | std :: reverse_iterator <const_iterator> |
11 | typ_rozmiaru | size_t |
12 | typ_różnicy | ptrdiff_t |
Funkcje z <deque>
Poniżej znajduje się lista wszystkich metod z nagłówka <deque>.
Konstruktorzy
Sr.No. | Metoda i opis |
---|---|
1 | deque :: deque domyślny konstruktor Konstruuje pusty deque z zerowym elementem. |
2 | deque :: deque fill konstruktor skonstruuj nowy deque z n elementów i przypisz val do każdego elementu deque |
3 | deque :: deque konstruktor zakresu Konstruuje deque z tyloma elementami w zakresie od pierwszego do ostatniego . |
4 | deque :: deque konstruktor kopiujący Konstruuje deque z kopią każdego elementu obecnego w istniejącym kontenerze. |
5 | deque :: deque move constructor Konstruuje deque z zawartością innych przy użyciu semantyki przenoszenia. |
6 | deque :: deque konstruktor listy inicjalizującej Konstruuje deque z listy inicjalizacji. |
Burzyciel
Sr.No. | Metoda i opis |
---|---|
1 | deque :: ~ deque Niszczy obiekt deque, zwalniając jego pamięć. |
Funkcje składowe
Sr.No. | Metoda i opis |
---|---|
1 | deque :: przypisać wersję zakresu Przypisz nowe wartości do elementów deque, zastępując stare. |
2 | deque :: przypisz wersję wypełnienia Przypisz nowe wartości do elementów deque, zastępując stare. |
3 | deque :: przypisanie wersji listy inicjalizacyjnej Przypisz nowe wartości do elementów deque, zastępując stare. |
4 | deque :: at Zwraca odniesienie do elementu obecnego w lokalizacji n w deque. |
5 | deque :: powrót Zwraca odwołanie do ostatniego elementu deque. |
6 | deque :: begin Zwraca iterator dostępu swobodnego wskazujący na pierwszy element deque. |
7 | deque :: cbegin Zwraca stały iterator o dostępie swobodnym, który wskazuje początek deque. |
8 | deque :: cend Zwraca stały iterator o dostępie swobodnym, który wskazuje początek deque. |
9 | deque :: clear Niszczy deque, usuwając wszystkie elementy z deque i ustawia rozmiar deque na zero. |
10 | deque :: crbegin Zwraca stały iterator odwrotny, który wskazuje na początek cofania kontenera. |
11 | deque :: crend Zwraca stały iterator odwrotny, który wskazuje na odwrotny koniec deque. |
12 | deque :: embrace Rozszerza kontener, wstawiając nowy element na miejscu . |
13 | deque :: embrace_back Wstawia nowy element na koniec deque. |
14 | deque :: embrace_front Wstawia nowy element na początku deque. |
15 | deque :: empty Sprawdza, czy deque jest pusty, czy nie. |
16 | deque :: end Zwraca iterator, który wskazuje na element poza końcem w kontenerze deque. |
17 | deque :: erase pozycja wersja Usuwa pojedynczy element z deque. |
18 | deque :: erase range wersja Usuwa pojedynczy element z deque. |
19 | deque :: front Zwraca odwołanie do pierwszego elementu deque |
20 | deque :: get_allocator Zwraca alokator powiązany z deque |
21 | deque :: insert wersja jednoelementowa Rozszerza kontener, wstawiając nowy element na miejscu. |
22 | deque :: insert fill version Rozszerza kontener, wstawiając nowy element do kontenera. |
23 | deque :: insert range wersja Rozszerza kontener, wstawiając nowy element do kontenera. |
24 | deque :: insert move wersja Rozszerza kontener, wstawiając nowy element do kontenera. |
25 | deque :: insert wersja listy inicjalizacyjnej Rozszerza kontener, wstawiając nowy element do kontenera. |
26 | deque :: max_size Zwraca maksymalną liczbę elementów, które może przechowywać deque. |
27 | deque :: operator = kopiuj wersję Przypisz nową zawartość do deque, zastępując stare i modyfikując rozmiar, jeśli to konieczne. |
28 | deque :: operator = przenieś wersję Przypisz nową zawartość do deque, zastępując stare i modyfikując rozmiar, jeśli to konieczne. |
29 | deque :: operator = wersja listy inicjalizacyjnej Przypisz nową zawartość do deque, zastępując stare i modyfikując rozmiar, jeśli to konieczne. |
30 | deque :: operator [] Zwraca odwołanie do elementu obecnego w lokalizacji n . |
31 | deque :: pop_back Usuwa ostatni element z deque i zmniejsza rozmiar deque o jeden. |
32 | deque :: pop_front Usuwa pierwszy element z deque i zmniejsza rozmiar deque o jeden. |
33 | deque :: push_back Wstawia nowy element na koniec deque i zwiększa rozmiar deque o jeden. |
34 | deque :: push_back move version Wstawia nowy element na koniec deque i zwiększa rozmiar deque o jeden. |
35 | deque :: push_front Wstawia nowy element z przodu deque i zwiększa rozmiar deque o jeden. |
36 | deque :: push_front move version Wstawia nowy element z przodu deque i zwiększa rozmiar deque o jeden. |
37 | deque :: rbegin Zwraca iterator odwrotny, który wskazuje na ostatni element deque. |
38 | deque :: rend Zwraca odwrotny iterator, który wskazuje na odwrotny koniec deque. |
39 | deque :: resize Zmienia rozmiar deque. |
40 | deque :: resize wartość wersja Zmienia rozmiar deque. |
41 | deque :: shrink_to_fit Żąda, aby pojemnik zmniejszył swoją pojemność, aby pasował do jego rozmiaru. |
42 | deque :: size Zwraca liczbę elementów obecnych w deque. |
43 | deque :: swap Wymienia zawartość deque z zawartością innego deque x . |
Przeciążone funkcje niebędące członkami
Sr.No. | Metoda i opis |
---|---|
1 | operator == Sprawdza, czy dwa deques są równe, czy nie. |
2 | operator! = Sprawdza, czy dwa deques są równe, czy nie. |
3 | operator < Sprawdza, czy pierwszy deque jest mniejszy niż inny, czy nie. |
4 | operator <= Sprawdza, czy pierwszy deque jest mniejszy lub równy innemu, czy nie. |
5 | operator> Sprawdza, czy pierwszy deque jest większy niż inny, czy nie. |
6 | operator> = Sprawdza, czy pierwszy deque jest większy lub równy innym, czy nie. |
7 | zamiana Wymienia zawartość dwóch deque. |