Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

list::emplace

公众成员函数  <list>
template <class... Args>
  iterator emplace (const_iterator position, Args&&... args);

构造并插入元素

在position插入一个新元素。 这个新元素是使用args作为其构造的参数来就地构造的

容器的大小增加了1。

与其他标准序列容器不同,list和forward_list对象被专门设计为能够在任意位置高效地插入和删除元素, 即使是在序列的中间。

通过调用allocator_traits::construct并传递args来构造元素。
存在一个类似的成员函数 insert,它复制或移动现有的对象到容器中。

☲  参数


position
容器中插入新元素的位置。
成员类型const_iterator是指向const元素的双向迭代器类型。
args
为构造新元素而传递的参数。

☉  返回值



指向新插入元素的迭代器。

成员类型迭代器是指向元素的双向迭代器类型。

新元素的存储是使用容器的分配器分配的, 失败时可能抛出异常(对于默认分配器,如果分配请求没有成功,将抛出bad_alloc)。

☣  示例



// list::emplace
#include <iostream>
#include <list>

int main ()
{
  std::list< std::pair<int,char> > mylist;

  mylist.emplace ( mylist.begin(), 100, 'x' );
  mylist.emplace ( mylist.begin(), 200, 'y' );

  std::cout << "mylist contains:";
  for (auto& x: mylist)
    std::cout << " (" << x.first << "," << x.second << ")";

  std::cout << '\n';
  return 0;
}

输出:
mylist contains: (200,y) (100,x)

✥ 复杂度



常量

☣ 迭代器的有效性



不变.

⇄ 数据竞争


容器被修改。
不访问包含的元素:并发访问或修改它们是安全的,尽管迭代包含position的范围是不安全的。。

☂ 异常安全性



强保证:如果抛出异常,容器中不会有任何变化。
如果allocator_traits::construct不支持相应的参数,或者如果position无效,它会导致未定义行为。

🍄  另请参阅



list::emplace_back 构造并在末尾插入元素(公众成员函数)
list::emplace_front 构造并在开头插入元素(公众成员函数)
list::insert 插入元素(公众成员函数)
list::splice 从另一个list转移元素(公众成员函数)
list::erase 删除元素(公众成员函数)
list::assign 分配容器的内容(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图