std::vector::emplace
template< class... Args > iterator emplace( const_iterator pos, Args&&... args ); |
(od C++11) | |
Wstawia nowy element do kontenera bezpośrednio przed pos. Element jest konstruowany poprzez std::allocator_traits::construct, które zazwyczaj używa placement-new do skonstruowania elementu "w miejscu"(ang), w lokalizacji zapewnionej przez kontener. Argumenty args... są przekazane do konstruktora jako std::forward<Args>(args)....
Jeśli nowy rozmiar size() jest większy niż capacity(), wszystkie iteratory i referencje są unieważnione. W przeciwnym wypadku, tylko iteratory i referencje na elementy występujące przed punktem wstawienia pozostają prawidłowe. Iterator zakońcowy w obu przypadkach jest również unieważniony.
Spis treści |
[edytuj] Parametry
pos | - | iterator przed którym zostanie skonstruowany nowy element |
args | - | argumenty do przekazania do konstruktora elementu |
Wymagania względem typów | ||
-T (typ elementu kontenera) musi spełniać wymagania MoveAssignable, MoveInsertable i EmplaceConstructible . |
[edytuj] Zwracana wartość
Iterator pointing to the emplaced element.
[edytuj] Złożoność
Liniowa względem odległości między pos a końcem kontenerów.
[edytuj] Wyjątki
Jeśli zostanie wyrzucony inny wyjątek niż przez {konstruktor kopiujący, konstruktor przenoszący, operator przypisania, operator przypisania przez przeniesienie} typu value, lub jeśli wyjątek jest wyrzucony podczas użycia emplace do wstawienia pojedynczego elementu na koniec kontenera i typ value jest CopyInsertable lub nothrow move constructible, zawartość kontenera nie zostanie zmodyfikowana (strong exception guarantee).
W przeciwnym razie działanie jest nieokreślone.
[edytuj] Zobacz także
wstawia elementy (publiczna metoda) |