std::forward_list<T,Allocator>::emplace_after
来自cppreference.com
| |
(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
参阅
| 在某个元素后插入新元素 (公开成员函数) |