C++ STL集合set使用详解与示例代码
需积分: 5 188 浏览量
更新于2024-10-24
收藏 716B ZIP 举报
资源摘要信息:"本资源主要讲解了C++标准模板库(STL)中的集合容器set的使用。首先,介绍了set的基本概念,然后通过具体的cpp代码示例,展示了如何创建、插入、删除和查询set中的元素,以及如何对set进行排序和操作。最后,附带了详细的代码文件main.cpp和README.txt,以帮助读者更好地理解和使用set容器。"
知识点1:C++ STL的集合容器set
set是C++标准模板库(STL)中的一个容器,它能够存储唯一的数据元素,即不允许有重复的值。set容器内部通常通过红黑树实现,因此它能够保持数据的排序,同时也提供了一些方便的操作。
知识点2:创建set容器
在C++中,可以使用set模板类来创建set容器。set容器默认的比较函数是std::less,它按照升序对元素进行排序。可以使用以下代码创建一个空的set容器:
```cpp
std::set<int> mySet;
```
如果需要创建一个包含初始值的set,可以使用初始化列表的方式:
```cpp
std::set<int> mySet = {1, 2, 3, 4, 5};
```
知识点3:插入元素
使用insert成员函数可以向set容器中插入一个元素。例如:
```cpp
mySet.insert(6);
```
如果插入的元素已存在,set会忽略这次插入,不会发生任何变化。
知识点4:删除元素
可以通过erase成员函数删除set中的元素。erase函数有两种用法:
```cpp
mySet.erase(3); // 删除值为3的元素
mySet.erase(mySet.begin()); // 删除迭代器指向的元素
```
另外,如果需要清除整个set中的所有元素,可以使用clear成员函数:
```cpp
mySet.clear();
```
知识点5:查询元素
set容器是基于红黑树实现的,因此它提供了对数时间复杂度的查找效率。可以使用find成员函数来查找某个值是否存在于set中:
```cpp
auto result = mySet.find(3); // result是一个迭代器,如果找到则指向对应的元素,否则指向set.end()
```
知识点6:排序和操作
set容器内部元素默认是升序排列的。如果需要按照不同的顺序存储元素,可以使用自定义比较函数或者自定义比较对象。例如,定义一个降序的set:
```cpp
struct CompareDescending {
bool operator()(const int &lhs, const int &rhs) const {
return lhs > rhs;
}
};
std::set<int, CompareDescending> descendingSet;
```
知识点7:C++代码文件main.cpp
main.cpp文件通常包含了程序的入口main函数,它是程序开始执行的地方。在本资源的main.cpp中,将会通过一系列操作来演示set容器的使用方法,包括创建set、插入元素、删除元素、查询元素等。
知识点8:README.txt文件
README.txt是一个常规的文档文件,用于说明项目的相关细节,如代码的使用方法、作者信息、版权声明、安装指南或测试说明等。在本资源中,README.txt应该会包含set容器使用示例的说明,帮助用户理解如何使用main.cpp中的代码,以及如何在自己的程序中应用set容器。
2021-07-14 上传
2021-07-14 上传
2021-07-14 上传
2021-07-14 上传
2021-07-14 上传
2021-07-16 上传
2021-07-14 上传
122 浏览量
2021-07-14 上传
weixin_38697471
- 粉丝: 6
- 资源: 980
最新资源
- 行业文档-设计装置-集中处理站油田采出液分离装置及油水分离方法.zip
- 01_Homework-Accessibility-Code-Refactor:为了提高Horiseon网站的搜索排名并使更多的用户可以访问它,对现有代码进行了重构
- 小程序预览PDF文件插件Pdf.js
- xue-git:学习git
- eng-hiring:18F工程部候选人选择指南,从简历屏幕到应聘者
- 将base64编码和解码为字节或utf8-Rust开发
- Vector_MATLAB_Simulink_MC_Add_on_15010
- muun::bird:Live Twitter仪表板
- mongoose-flights
- 动态演示nio中的buffer相关操作.zip
- 海吉亚医疗-6078.HK-公司深度研究:复制的确定性缘何而来.rar
- http-请托管这些东西-基本的http服务器,用于快速,简单地托管文件夹-Rust开发
- css3按钮特效制作鼠标悬停按钮动画特效
- Sor:机械鸟游戏
- 非常好的一款多小区物业管理系统
- Stat466:鲍恩施纳普森的统计数据-开源