📜  C++ STL-Multiset.emplace()函数(1)

📅  最后修改于: 2023-12-03 15:13:55.915000             🧑  作者: Mango

C++ STL-Multiset.emplace()函数介绍

C++标准程序库中的STL(标准模板库)是一组模板类和函数的集合,可以供程序员使用,提高开发效率,其中multiset是STL中的关联容器,该容器是允许重复关键字的有序集合。

multiset提供了多种成员函数,其中emplace()函数可以插入新元素到multiset容器中,本文将介绍该函数的使用方法及其注意事项。

函数原型

multiset容器的emplace()函数原型如下:

template<class... Args>
iterator emplace(Args&&... args);

函数的作用是将参数(args)按顺序构造成一个新元素,并将该元素插入到multiset容器中。

函数参数
  • Args... args:表示参数包,可以是1个或多个元素值或对象。
函数返回值
  • iterator:新元素在multiset容器中的位置的迭代器。
函数使用实例

下面是一个使用emplace()函数向multiset中添加元素的例子:

#include <iostream>
#include <set>

int main() {
  std::multiset<int> myset = {1, 2, 3, 4, 5}; // 创建multiset容器

  // 使用emplace()函数插入新元素
  auto it = myset.emplace(6);

  // 打印multiset容器中的元素
  std::cout << "myset contains:";
  for (int x : myset)
    std::cout << ' ' << x;
  std::cout << '\n';

  // 打印新元素在multiset容器中的位置
  std::cout << "new element value: " << *it << '\n';
  std::cout << "new element position: " << std::distance(myset.begin(), it) << '\n';

  return 0;
}

输出结果为:

myset contains: 1 2 3 4 5 6
new element value: 6
new element position: 5

在上述例子中,我们首先创建了一个multiset容器,其中包含5个元素。然后我们使用emplace()函数向该容器中插入一个新元素,并输出multiset容器中的所有元素;最后我们再输出新元素在multiset容器中的位置。

注意事项
  1. emplace()函数会在插入新元素时按自然顺序排序multiset容器,因此该函数使用前需要先为multiset容器排序。
  2. emplace()函数不会检查multiset容器中是否已经有相同的元素,因此可能会插入重复的元素。
  3. emplace()函数会比insert()等其他插入元素的函数效率更高,因为它避免了执行构造函数和析构函数的过程。