std::
list::emplace_front
公众成员函数 <list>
template <class... Args>
void emplace_front (Args&&... args);
在开始处构造并插入元素
在列表的开头插入一个新元素,就在当前的第一个元素之前。
这个新元素是使用args作为其构造的参数来就地构造的
容器的大小增加了1。
通过调用allocator_traits::construct并传递args来构造元素。
存在一个类似的成员函数push_front,它复制或移动现有的对象到容器中。
☲ 参数
-
args
-
为构造新元素而传递的参数。
☉ 返回值
none
新元素的存储是使用容器的分配器分配的,
失败时可能抛出异常(对于默认分配器,如果分配请求没有成功,将抛出bad_alloc)。
☣ 示例
// list::emplace_front
#include <iostream>
#include <list>
int main ()
{
std::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;
} |
输出:
mylist contains: (30,c) (20,b) (10,a)
✥ 复杂度
常量
☣ 迭代器的有效性
不变.成员begin返回一个不同的迭代器值。
⇄ 数据竞争
容器被修改。
不访问包含的元素:并发访问或修改它们是安全的。
☂ 异常安全性
强保证:如果抛出异常,容器中不会有任何变化。
如果不支持allocator_traits::construct,则会导致未定义的行为。
🍄 另请参阅
list::emplace_back |
构造并在末尾插入元素(公众成员函数) |
list::emplace |
构造并插入元素(公众成员函数) |
list::push_front |
在开头插入元素(公众成员函数) |
list::pop_front |
删除第一个元素(公众成员函数) |