📜  C++ STL中的multiset :: emplace()(1)

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

C++ STL中的multiset::emplace()

简介

multiset 是 C++ STL 中的一个关联式容器,它是一个有序的容器,存储的元素按照键值自动排序,并支持快速的搜索、插入和删除操作。multiset 中的每一个元素都是一个键值对,其中键和值相同。emplace()multiset 中的一个成员函数,它可以直接在容器中就地构造一个元素,而不需要先构造一个元素,再将其插入容器中。

语法

multiset 中的 emplace() 函数的语法如下:

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

其中 Args 是传递给元素构造函数的参数列表。

示例

以下是一个简单的 multiset::emplace() 函数的示例,用于向容器中添加元素:

#include <iostream>
#include <set>

int main() {
  std::multiset<int> myset;

  myset.emplace(1);
  myset.emplace(2);
  myset.emplace(3);
  myset.emplace(4);

  for (const auto& element : myset)
    std::cout << element << ' ';
  std::cout << std::endl;

  return 0;
}

这个程序输出的结果是:

1 2 3 4

这个程序创建了一个空的 multiset,然后使用 emplace() 函数添加了四个元素。最后,程序遍历整个 multiset 并打印出它们的值。

注意事项
  • emplace() 函数会直接在容器中构造元素,因此不返回新元素的迭代器。如果需要获取新元素的迭代器,可以使用 insert() 函数。
  • 在自定义类型的 multiset 中使用 emplace() 函数时,需要添加一个可调用的构造函数,否则会编译错误。