Przestrzenie nazw
Warianty
Działania

std::vector::emplace

Z cppreference.com
< cpp‎ | container‎ | vector
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) [edit]