public member function
<forward_list>

std::forward_list::push_front

void push_front (const value_type& val);void push_front (value_type&& val);
在开头插入元素
forward_list 的开头,在其当前第一个元素之前插入一个新元素。val 的内容被复制(或移动)到插入的元素中。

这会有效地将容器大小增加一。

存在一个类似的成员函数,emplace_front,它直接在原位构造插入的元素对象,无需进行任何复制或移动操作。

参数

val
要被复制(或移动)到新插入元素的值。
成员类型value_type是容器中元素的类型,在 forward_list 中定义为其第一个模板参数的别名(T).

返回值



如果新元素需要存储空间,则使用以下方法分配:allocator_traits<allocator_type>::construct()分配,这在失败时可能会抛出异常(对于默认的 allocatorbad_alloc如果分配请求不成功,则抛出)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// forward_list::push_front
#include <iostream>
#include <forward_list>
using namespace std;

int main ()
{
  forward_list<int> mylist = {77, 2, 16};
  mylist.push_front (19);
  mylist.push_front (34);

  std::cout << "mylist contains:";
  for (int& x: mylist) std::cout << ' ' << x;
  std::cout << '\n';

  return 0;
}

输出
mylist contains: 34 19 77 2 16


复杂度

常量。

迭代器有效性

没有变化。

数据竞争

容器被修改。
不访问任何现有元素:并发访问或修改它们是安全的。

异常安全

强保证:如果抛出异常,容器没有发生变化。
如果不支持使用 val 作为参数的 allocator_traits::construct,则会导致“未定义行为”。

另见