std::stack::stack
Z cppreference.com
(1) | ||
explicit stack(const Container& cont = Container()); | (do C++11) | |
explicit stack(const Container& cont ); | (od C++11) | |
explicit stack( Container&& cont = Container()); | (2) | (od C++11) |
stack(const stack& other ); | (3) | |
stack( stack&& other ); | (4) | (od C++11) |
template<class Alloc > explicit stack(const Alloc& alloc ); | (5) | (od C++11) |
template<class Alloc > stack(const Container& cont, const Alloc& alloc ); | (6) | (od C++11) |
template<class Alloc > stack( Container&& cont, const Alloc& alloc ); | (7) | (od C++11) |
template<class Alloc > stack(const stack& other, const Alloc& alloc ); | (8) | (od C++11) |
template<class Alloc > stack( stack&& other, const Alloc& alloc ); | (9) | (od C++11) |
Konstruuje nowy kontener opakowywany przez ten adapter z różnych źródeł danych, opcjonalnie wykorzystując dostarczony przez użytkownika alokator alloc.
1) Konstruuje opakowywany kontener c poprzez skopiowanie cont. Jest to również konstruktor domyślny.(do C++11)
2) Konstruuje opakowywany kontener c poprzez przeniesienie std::move(cont). Jest to również konstruktor domyślny.(od C++11)
3)Konstruktor kopiujący. Adapter jest konstruowany poprzez skopiowanie other.c. (niejawnie zadeklarowany)
4)Konstruktor przenoszący. Adapter jest konstruowany poprzez przeniesienie std::move(other.c). (niejawnie zadeklarowany)
5-9) Następujące konstruktory są zdefiniowane tylko wtegy, gdy std::uses_allocator<container_type, Alloc>::value==true, to znaczy, gdy opakowywany kontener jest "allocator-aware" (wszystkie kontenery biblioteki standardowej spełniają to założenie).
5) Konstruuje opakowywany kontener wykorzystując alloc jako alokator, tak jak przy wywołaniu c(alloc).
6) Konstruuje opakowywany kontener wykorzystując zawartość cont i używając alloc jako alokatora, tak jak przy wywołaniu c(cont, alloc).
7) Konstruuje opakowywany kontener przenosząc zawartość cont i używając alloc jako alokatora, tak jak przy wywołaniu c(std::move(cont), alloc).
8) Konstruuje adapter wykorzystując zawartość other.c i używając alloc jako alokatora, tak jak przy wywołaniu c(other.c, alloc).
9) Konstruuje adapter przenosząc zawartość other i używając alloc jako alokatora, tak jak przy wywołaniu c(std::move(other.c), alloc).
Spis treści |
[edytuj]Parametry
alloc | - | alokator używany do wszystkich alokacji pamięci wykonywanych przez opakowywany kontener |
other | - | inny adapter, wykorzystywany jako źródło, z którego inicjalizowany jest opakowywany kontener |
cont | - | inny kontener, wykorzystywany jako źródło, którym inicjalizowany jest opakowywany kontener |
first, last | - | przedział, z którego zostają skopiowane elementy |
Wymagania względem typów | ||
-Alloc musi spełniać wymagania Alokator. | ||
-Container musi spełniać wymagania Container . Konstruktory (5-10) są definiowane, jeśli Container spełnia wymagania AllocatorAwareContainer | ||
-InputIt musi spełniać wymagania InputIterator. |
[edytuj]Złożoność
1, 3, 5, 6, 8: liniowa względem rozmiaru cont lub other
2, 4, 7, 9: stała
Ta sekcja jest niedokończona. |
[edytuj]Przykład
#include <stack>#include <deque>#include <iostream> int main(){std::stack<int> c1; c1.push(5);std::cout<< c1.size()<<'\n'; std::stack<int> c2(c1);std::cout<< c2.size()<<'\n'; std::deque<int> deq {3, 1, 4, 1, 5};std::stack<int> c3(deq);std::cout<< c3.size()<<'\n';}
Wynik:
1 1 5
[edytuj]Zobacz także
przypisuje wartości do adaptora kontenera (publiczna metoda) |