std::forward_list<T,Allocator>::emplace_after
来自cppreference.com
< cpp | container | forward list
template< class... Args > iterator emplace_after( const_iterator pos, Args&&... args ); |
(C++11 起) | |
在容器中的指定位置后插入新元素。原位构造元素,即不进行复制或移动操作。准确地以与提供给函数者相同的参数调用元素的构造函数。
没有引用和迭代器会失效。
参数
pos | - | 新元素将构造于其后的迭代器 |
args | - | 转发给元素构造函数的参数 |
返回值
指向新元素的迭代器。
复杂度
常数。
异常
若抛出任何异常(例如由构造函数),则容器留在未修改状态,如同从未调用过此函数(强异常保证)。
示例
示例演示按自然顺序(与逆序相反)的单链表规范填充。
运行此代码
#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(); }
输出:
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
参阅
(C++11) |
在某个元素后插入新元素 (公开成员函数) |