##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::vector::emplace

From cppreference.com
< cpp‎ | container‎ | vector

[edit template]

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).

### Notes

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

### [edit] See also

insert | inserts elements (public member function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/container/vector/emplace&oldid=50807"