public member function
<forward_list>
template <class... Args>
void emplace_front (Args&&... args);
Construct and insert element at beginning
Inserts a new element at the beginning of the forward_list, right before its current first element. This new element is constructed in place using args as the arguments for its construction.
This effectively increases the container size by one.
A similar member function exists, push_front, which either copies or moves an existing object into the container.
Parameters
- args
- Arguments forwarded to construct the new element.
Return value
none
The storage for the new element is allocated using allocator_traits<allocator_type>::construct(), which may throw exceptions on failure (for the default allocator, bad_alloc is thrown if the allocation request does not succeed).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
// forward_list::emplace_front
#include <iostream>
#include <forward_list>
int main ()
{
std::forward_list< std::pair<int,char> > mylist;
mylist.emplace_front(10,'a');
mylist.emplace_front(20,'b');
mylist.emplace_front(30,'c');
std::cout << "mylist contains:";
for (auto& x: mylist)
std::cout << " (" << x.first << "," << x.second << ")";
std::cout << std::endl;
return 0;
}
| |
Output:
mylist contains: (30,c) (20,b) (10,a)
|
Iterator validity
No changes.
Member begin returns a different iterator value.
Data races
The container is modified.
No contained elements are accessed: concurrently accessing or modifying them is safe.
Exception safety
Strong guarantee: if an exception is thrown, there are no changes in the container.
If allocator_traits::construct is not supported with the appropriate arguments, it causes undefined behavior.