【温故而知新】C和C++9:STL中的set容器

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 1、Set/MultiSet容器的定义和创建 Set即集合类,可以在程序中按照次序来保存一组数值。在集合中,元素的关键字和数据二者相同,该集合本质上就是一个有序的排列。

1、Set/MultiSet容器的定义和创建

Set即集合类,可以在程序中按照次序来保存一组数值。在集合中,元素的关键字和数据二者相同,该集合本质上就是一个有序的排列。Multiset与set不同的是,前者其中的元素允许重复而后者不允许。

Set对象采用二叉树结构储存,该结构的优点是查询效率高,并且有利于插入和删除操作。

Set定义了多种实例化的方法,其中比较常用的有:

set<int> s0;//定义一个空的set
set<int, greater<int>> s1;//定义带大于比较器的set
set<int> s2(s1.begin(), s1.end()) ;//通过另一个set的迭代器来区间初始化
//......
Multiset的定义方法与set类似。


2、集合类提供的元素操作方法

(1)begin函数:返回指向集合中第一个元素的迭代器;

(2)end函数:返回指向集合中最后一个元素的迭代器;

(3)rbegin函数:返回指向集合中第一个元素的反向迭代器;

(4)rend函数:返回指向集合中最后一个元素的反向迭代器;

(5)empty函数:判断集合是否为空,为空返回true,非空返回false;

(6)size/max_size函数:分别用于返回集合的大小,以及对象允许保存最多对象的个数;

(7)insert/erase/clear函数:分别用于在集合中插入元素、删除某个元素、清空整个集合对象;


3、集合类提供的其他方法

(1)lower_bound函数返回指向某个元素迭代器:该函数带有一个参数,即试图获取的元素;返回值为一个指向该元素的迭代器;如果没找到该元素,则返回迭代器指向end();

(2)upper_bound函数返回指向大于函数参数的元素迭代器;

(3)元素比较:由于set和Multiset没有提供><等比较操作符,因此需要使用特定的比较函数:key_comp和value_comp,分别用于键值比较和实值比较;

目录
相关文章
|
11天前
|
存储 算法 C++
C++提高篇:泛型编程和STL技术详解,探讨C++更深层的使用
文章详细探讨了C++中的泛型编程与STL技术,重点讲解了如何使用模板来创建通用的函数和类,以及模板在提高代码复用性和灵活性方面的作用。
28 2
C++提高篇:泛型编程和STL技术详解,探讨C++更深层的使用
|
2月前
|
存储 算法 编译器
[C++] STL简介
[C++] STL简介
23 1
|
2月前
|
存储 算法 C++
C++ STL应用宝典:高效处理数据的艺术与实战技巧大揭秘!
【8月更文挑战第22天】C++ STL(标准模板库)是一组高效的数据结构与算法集合,极大提升编程效率与代码可读性。它包括容器、迭代器、算法等组件。例如,统计文本中单词频率可用`std::map`和`std::ifstream`实现;对数据排序及找极值则可通过`std::vector`结合`std::sort`、`std::min/max_element`完成;而快速查找字符串则适合使用`std::set`配合其内置的`find`方法。这些示例展示了STL的强大功能,有助于编写简洁高效的代码。
37 2
|
2月前
|
安全 编译器 容器
C++STL容器和智能指针
C++STL容器和智能指针
|
2月前
|
算法 安全 Linux
|
3月前
|
设计模式 算法 Java
【c++】STL之stack和queue详解
【c++】STL之stack和queue详解
37 1
|
17天前
|
存储 Java API
【数据结构】map&set详解
本文详细介绍了Java集合框架中的Set系列和Map系列集合。Set系列包括HashSet(哈希表实现,无序且元素唯一)、LinkedHashSet(保持插入顺序的HashSet)、TreeSet(红黑树实现,自动排序)。Map系列为双列集合,键值一一对应,键不可重复,值可重复。文章还介绍了HashMap、LinkedHashMap、TreeMap的具体实现与应用场景,并提供了面试题示例,如随机链表复制、宝石与石头、前K个高频单词等问题的解决方案。
23 6
【数据结构】map&set详解
|
6天前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
19 5
|
10天前
|
存储 JavaScript 前端开发
js的map和set |21
js的map和set |21
|
9天前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
下一篇
无影云桌面