< cpp‎ | container‎ | vector

template< class... Args >
iterator emplace( const_iterator pos, Args&&... args );
(since C++11)

Inserts a new element into the container directly before pos. The element is constructed through std::allocator_traits::construct, which typically uses placement-new to construct the element in-place at a location provided by the container. The arguments args... are forwarded to the constructor as std::forward<Args>(args)....

If the new size() is greater than capacity(), all iterators and references are invalidated. Otherwise, only the iterators and references before the insertion point remain valid. The past-the-end iterator is also invalidated.


[edit] Parameters

pos - iterator before which the new element will be constructed
args - arguments to forward to the constructor of the element
Type requirements
T (the container's element type) must meet the requirements of MoveAssignable, MoveInsertable and EmplaceConstructible.

[edit] Return value

Iterator pointing to the emplaced element.

[edit] Complexity

Linear in the distance between pos and end of the container.

[edit] Exceptions

If an exception is thrown (e.g. by the constructor), the container is left unmodified, as if this function was never called (strong exception guarantee).


The specialization std::vector<bool> did not have emplace() member until C++14.

[edit] See also

inserts elements
(public member function)