std::vector::emplace
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.
Contents |
[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).
Notes
The specialization std::vector<bool> did not have emplace()
member until C++14.
[edit] See also
inserts elements (public member function) |