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
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 . |
Zwracana wartość
Iterator pointing to the emplaced element.
Złożoność
Liniowa względem odległości między pos a końcem kontenerów.
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.
Zobacz także
| wstawia elementy (publiczna metoda) |