std::deque::operator=
Z cppreference.com
deque& operator=(const deque& other ); | (1) | |
(2) | ||
deque& operator=( deque&& other ); | (od C++11) | |
deque& operator=(std::initializer_list<T> ilist ); | (3) | (od C++11) |
Zastępuje zawartość kontenera.
1) Operator przypisania przez kopiowanie. Zastępuje zawartość kontenera kopią zawartości other.Jeśli std::allocator_traits<allocator_type>::propagate_on_container_copy_assignment::value to true, alokator docelowy jest zastępowany kopią alokatora źródłowego. Jeśli nie są one sobie równe, alokator (*this) jest użyty do dealokacji pamięci, a następnie alokator other jest użyty do zaalokowania pamięci przed skopiowaniem elementów.(od C++11).
2) Operator przypisania przez przeniesienie. Zastępuje zawartość kontenera zawartością other, używając semantyki move (tj. dane z other są przeniesione z other do tego kontenera). other jest po tej operacji w poprawnym, ale niesprecyzowanym stanie. Jeśli std::allocator_traits<allocator_type>::propagate_on_container_move_assignment::value to true, alokator docelowy jest zastępowany kopią alokatora źródłowego. Jeśli jednak to false a alokator docelowy i źródłowy nie są identyczne, kontener docelowy nie może przejąć na własność pamięci kontenera źródłowego, przez co jest zmuszony >przypisać przez przeniesienie< każdy z elementów osobno, alokując w razie potrzeby dodatkową pamięć korzystając z własnego alokatora. W dowolnym przypadku, elementy początkowo obecne w *this są albo niszczone, albo replaced by elementwise move-assignment(wymaga tłumaczenia).
3) Zastępuje zawartość kontenera zawartością utożsamianą przez listę inicjalizacyjną ilist.
Spis treści |
[edytuj]Parametry
other | - | inny kontener, wykorzystany jako źródło danych |
ilist | - | lista inicjalizacyjna, wykorzystana jako źródło danych |
[edytuj]Zwracana wartość
*this
[edytuj]Złożoność
1) Liniowa względem rozmiaru *this i other.
2) Liniowa względem rozmiaru *this chyba, że alokatory nie są równe i nie propagują, w którym to wypadku liniowa względem rozmiaru *this i other
3) Liniowa względem rozmiaru *this i ilist.
[edytuj]Notka
After container move assignment (overload (2)), unless elementwise move assignment is forced by incompatible allocators, references, pointers, and iterators (other than the end iterator) to other remain valid, but refer to elements that are now in *this. The current standard makes this guarantee via the blanket statement in §23.2.1[container.requirements.general]/12, and a more direct guarantee is under consideration via LWG 2321.
Ta sekcja jest niedokończona. Powód: wymaga tłumaczenia |
[edytuj]Przykład
Szablon:cpp/container/deque/example operator=
[edytuj]Zobacz także
Konstruuje deque (publiczna metoda) | |
przypisuje wartości do kontenera (publiczna metoda) |