C++ set 构造函数

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

集合构造函数有以下五种用法:

  1. 默认构造函数: 用于构造一个包含零元素的空集合容器。
  2. 范围构造函数: 用于构造一个包含范围 [first, last) 内容的容器。
  3. 拷贝构造函数: 用于构造一个包含现有容器元素副本的集合。
  4. 移动构造函数: 用于使用移动语义构造一个包含其他元素内容的容器。
  5. 初始化列表构造函数: 用于构造一个包含初始化列表内容的集合。

语法

默认构造函数

范围构造函数

拷贝构造函数

移动构造函数

初始化列表构造函数

参数

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

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

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

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

x: 另一个相同类型的集合对象。

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

返回值

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

复杂度

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

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

迭代器有效性

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

数据竞争

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

异常安全

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

示例 1

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

输出

Size of set = 0

在上面的例子中,s 是一个空集合,因此大小为 0。

示例 2

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

输出

Size of set container myset is: 5

在上面的例子中,集合 myset 是用 evens 的元素构造的。

示例 3

让我们看一个拷贝构造函数的简单示例

输出

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

在上面的例子中,s2 是 s1 集合的一个副本。

示例 4

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

输出

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

在上面的例子中,s1 的内容被移动到 s2 集合。

示例 5

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

输出

Size of set container fruit is : 5

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


下一个主题C++ Set 析构函数