C++ multiset 构造函数

2024年8月30日 | 阅读4分钟

multiset 构造函数有以下五种用法

  1. 默认(空)构造函数:用于构造一个不包含任何元素的空 multiset 容器。
  2. 范围构造函数:用于构造一个包含范围 [first, last) 内元素的容器。
  3. 复制构造函数:用于构造一个包含现有容器元素副本的 multiset。
  4. 移动构造函数:用于通过移动语义构造一个包含其他容器元素的容器。
  5. 初始化列表构造函数:用于构造一个包含初始化列表内容的 multiset。

语法

默认构造函数

范围构造函数

复制构造函数

移动构造函数

初始化列表构造函数

参数

comp:一个比较函数对象,它接受两个键参数,如果第一个参数在第二个参数之前,则返回 true,否则返回 false。默认情况下,它使用 less<key_type> 谓词。

alloc:用于此容器所有内存分配的分配器对象。

first:范围中第一个位置的输入迭代器。

last:范围中最后一个位置的输入迭代器。

x:同类型的另一个 multiset 对象。

il:从中复制元素的初始化列表对象。

返回值

构造函数从不返回任何值。

复杂度

对于空构造函数和移动构造函数,复杂度将是常数。

对于所有其他情况,如果元素已排序,则复杂度将是迭代器之间距离的线性关系。

迭代器有效性

如果在移动构造函数中移动了 multiset 容器的元素,则与 x 相关的所有指针、迭代器和引用都将失效。

数据竞争

所有复制的元素都将被访问。

异常安全

如果抛出异常,则没有影响。

示例 1

让我们看一下默认构造函数的简单示例

输出

Size of multiset = 0

在上面的示例中,s 是一个空的 multiset,因此大小为 0。

示例 2

让我们看一下范围构造函数的简单示例

输出

Size of multiset container mymultiset is: 5

在上面的示例中,multiset mymultiset 是用 evens 的元素构造的。

示例 3

让我们看一下复制构造函数的简单示例

输出

Size of multiset container s1 is: 2
Size of new multiset container s2 is: 2

在上面的示例中,s2 是 s1 multiset 的副本。

示例 4

让我们看一下移动构造函数的简单示例

输出

Size of multiset container s1 is: 3
Size of new multiset container s2 is: 3

在上面的示例中,s1 的内容被移动到 s2 multiset。

示例 5

让我们看一下初始化列表构造函数的简单示例

输出

Size of multiset container fruit is: 5

上面的示例创建了一个以字符串为键的 multiset fruit,并使用 initializer_list 对其进行初始化。

下一个主题C++ multiset