栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++STL Set容器详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++STL Set容器详解

Set容器 set/ multiset 容器 1 set基本概念

简介:

  • 所有元素都会在插入时自动被排序

本质:

  • set/multiset属于关联式容器,底层结构是用二叉树实现。

set和multiset区别:

  • set不允许容器中有重复的元素
  • multiset允许容器中有重复的元素
2 运算符
Set 版本Multiset 版本描述
operator! = (set)operator! = (multiset)测试运算符左侧的 set 或 multiset 对象是否不等于右侧的 set 或 multiset 对象。
operator< (set)operator< (multiset)测试运算符左侧的 set 或 multiset 对象是否小于右侧的 set 或 multiset 对象。
operator<= (set)operator < = (multiset)测试运算符左侧的 set 或 multiset 对象是否小于或等于右侧的 set 或 multiset 对象。
operator = = (set)operator = = (multiset)测试运算符左侧的 set 或 multiset 对象是否等于右侧的 set 或 multiset 对象。
operator> (set)operator> (multiset)测试运算符左侧的 set 或 multiset 对象是否大于右侧的 set 或 multiset 对象。
operator>= (set)operator>= (multiset)测试运算符左侧的 set 或 multiset 对象是否大于或等于右侧的 set 或 multiset 对象。
3 专用化模板
Set 版本Multiset 版本描述
swap交换 (multiset)交换两个集或多个集的元素。

C++ 标准库容器 set 类用于存储和检索集合的数据。set 中的元素值是唯一的,并用作数据自动排序依据 set 的键值。 中元素的值 set 不能直接更改。 必须先删除旧值,才能插入具有新值的元素。

C++ 标准库集是:

  • 大小可变的关联容器,支持基于关联键值高效检索元素值。 此外,它是一个简单的关联容器,因为它的元素值是它的键值。

  • 可逆,因为它提供双向迭代器来访问其元素。

  • 有序,因为它的元素在容器中根据指定的比较函数按键值排序。

唯一,每个元素必须具有唯一键。 集还是简单关联容器,因此它的元素也是唯一的。

集也描述为类模板,因为它提供的功能是泛型的,独立于作为元素包含的特定数据类型。 可使用的数据类型作为类模板以及比较函数和分配器中的参数指定。

容器类型选择通常应根据应用程序所需的搜索和插入的类型。 关联容器针对查找、插入和移除操作进行了优化。 显式支持这些操作的成员函数非常高效,在平均与容器中的元素数对数成正比的时间执行这些操作。 插入元素会使任何 iterator 无效,删除元素只会使指向已删除元素的 iterator 失效。

当应用程序满足将值与其键关联的条件时,应选择集作为关联容器。 集的元素是唯一的,并用作其自己的排序键。 此类结构的模型是排序列表,如关键字排序列表,其中关键字只能出现一次。 如果允许关键字多次出现,则应使用多重集合作为适当的容器结构。 如果需要将值附加到唯一关键字的列表,则映射应为包含此数据的适当结构。 如果键不唯一,则多重映射将是选择的容器。

4 函数
名称说明
begin返回一个迭代器,此迭代器用于发现 set 中的第一个元素。
cbegin返回一个常量迭代器,此迭代器用于发现 set 中的第一个元素。
cend返回一个常量迭代器,此迭代器用于发现 set 中最后一个元素之后的位置。
clear清除 set 的所有元素。
containsC++20检查 中是否有具有指定键的元素 set 。
count返回 set 中其键与指定为参数的键匹配的元素数量。
crbegin返回一个常量迭代器,此迭代器用于发现反向 set 中的第一个元素。
crend返回一个常量迭代器,此迭代器用于发现反向 set 中最后一个元素之后的位置。
emplace将就地构造的元素插入到 set。
emplace_hint将就地构造的元素插入到 set,附带位置提示。
empty测试 set 是否为空。
end返回一个迭代器,此迭代器用于发现 set 中最后一个元素之后的位置。
equal_range返回一对迭代器,这两个迭代器分别用于发现 set 中其键大于指定键的第一个元素,以及 set 中其键等于或大于指定键的第一个元素。
erase从集中的指定位置移除一个元素或元素范围,或者移除与指定键匹配的元素。
find返回一个迭代器,此迭代器用于发现 set 中其键与指定键等效的元素的位置。
get_allocator返回用于构造 allocator 的 set 对象的副本。
insert将一个元素或元素范围插入到 set。
key_comp检索用于对 set 中的键进行排序的比较对象副本。
lower_bound返回一个迭代器,此迭代器指向集中其键等于或大于指定键的第一个元素。
max_size返回 set 的最大长度。
rbegin返回一个迭代器,此迭代器用于发现反向 set 中的第一个元素。
rend返回一个迭代器,此迭代器用于发现反向 set 中最后一个元素之后的位置。
size返回 set 中的元素数量。
swap交换两个 set 的元素。
upper_bound返回一个迭代器,此迭代器指向 set 中其键大于指定键的第一个元素。
value_comp检索用于对 set 中的元素值进行排序的比较对象副本。

示例链接https://docs.microsoft.com/zh-cn/cpp/standard-library/set-class?view=msvc-160

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号