std::forward_list emplace_after() method
- since C++11
// Non const version only
template< class... Args >
iterator emplace_after( const_iterator pos, Args&&... args );
Inserts a new element into a position after the specified position in the container.
The element is constructed in-place, i.e. no copy or move operations are performed. The constructor of the element is called with exactly the same arguments, as supplied to the function.
Parameters
pos
- iterator before which the new element will be constructedargs
- arguments to forward to the constructor of the element
Return value
Iterator pointing to the new element.
Complexity
Constant - O(1).
Exceptions
If an exception is thrown by any operation, the are no effect (strong exception guarantee).
Example
Main.cpp
#include <forward_list>
#include <iostream>
#include <string>
struct Sum {
std::string remark;
int sum;
Sum(std::string remark, int sum)
: remark{std::move(remark)}, sum{sum} {}
void print() const {
std::cout << remark << " = " << sum << '\n';
}
};
int main()
{
std::forward_list<Sum> list;
auto iter = list.before_begin();
std::string str{"1"};
for (int i{1}, sum{1}; i != 10; sum += i) {
iter = list.emplace_after(iter, str, sum);
++i;
str += " + " + std::to_string(i);
}
for (const Sum& s : list) s.print();
}
Output
1 = 1
1 + 2 = 3
1 + 2 + 3 = 6
1 + 2 + 3 + 4 = 10
1 + 2 + 3 + 4 + 5 = 15
1 + 2 + 3 + 4 + 5 + 6 = 21
1 + 2 + 3 + 4 + 5 + 6 + 7 = 28
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.
Hover to see the original license.