C++之SET容器

devtools/2024/11/14 2:47:28/

set 是 C++ STL (Standard Template Library) 中的一个关联容器。它存储唯一的元素,并且这些元素是自动排序的(默认情况下为升序)。set 内部通常实现为红黑树,这是一种自平衡二叉搜索树。

主要特点

  1. 唯一性set 容器不允许有重复的元素。
  2. 排序:所有元素都是按照一定的顺序排列的,默认为升序。
  3. 高效查找:由于内部使用了平衡二叉搜索树,所以插入、删除和查找操作的时间复杂度都为 O(log n)。
  4. 双向迭代器:可以使用双向迭代器来遍历 set 容器中的元素。

常用操作

定义和初始化
#include <set>std::set<int> s; // 创建一个空的 set 容器
std::set<int> s = {1, 2, 3}; // 初始化 set 容器
插入元素
s.insert(5); // 插入单个元素
s.insert({6, 7}); // 插入多个元素
删除元素
s.erase(5); // 删除值为 5 的元素
s.erase(s.begin()); // 删除第一个元素
查找元素
auto it = s.find(3); // 查找值为 3 的元素,返回指向该元素的迭代器,如果找不到则返回 end()
if (it != s.end()) {std::cout << "Found " << *it << std::endl;
} else {std::cout << "Not found" << std::endl;
}
检查元素是否存在
if (s.count(3)) {std::cout << "3 is in the set." << std::endl;
} else {std::cout << "3 is not in the set." << std::endl;
}
获取元素数量
std::cout << "The set has " << s.size() << " elements." << std::endl;
清空集合
s.clear(); // 清空 set 容器
遍历集合
for (const auto& elem : s) {std::cout << elem << " ";
}
// 或者使用迭代器
for (auto it = s.begin(); it != s.end(); ++it) {std::cout << *it << " ";
}

自定义比较函数

如果你想改变 set 中元素的排序方式,可以提供一个自定义的比较函数或对象。例如,如果你想要创建一个降序的 set,你可以这样做:

#include <set>
#include <functional>std::set<int, std::greater<int>> descendingSet; // 创建一个降序的 set

或者使用自定义的比较类:

struct CustomCompare {bool operator()(int a, int b) const {return a > b; // 降序排序}
};std::set<int, CustomCompare> customSet;

总结

set 是一个非常有用的数据结构,当你需要存储唯一且有序的元素时,它是一个很好的选择。由于它的内部实现,它提供了高效的插入、删除和查找操作。


http://www.ppmy.cn/devtools/133415.html

相关文章

Intern大模型训练营(四):使用Hugging Face下载模型

1. Huggingface下载模型 首先在Huggingface平台注册账号。 然后进入https://github.com/codespaces&#xff0c;选择使用jupyter_notebook配置&#xff0c;输入以下命令流安装香瓜依赖。 # 安装transformers pip install transformers4.38 pip install sentencepiece0.1.99 …

图像处理椒盐噪声

椒盐噪声&#xff0c;也称为脉冲噪声&#xff0c;是图像中经常见到的一种噪声。它是一种随机出现的白点或者黑点&#xff0c;可能是亮的区域有黑色像素或是在暗的区域有白色像素&#xff08;或是两者皆有&#xff09;。这些白点和黑点会在图像中随机分布&#xff0c;导致图像中…

Python与Excel交互:pandas库安装及基本用法

在之前的文章中&#xff0c;我们探讨了Python处理Excel文件的基本概念&#xff0c;如工作簿、工作表以及单元格等。现在我们将转向具体的工具介绍——pandas库&#xff0c;它是Python中最常用的数据分析库之一&#xff0c;能够非常便捷地读取、处理和写入Excel文件。 安装pand…

Nano Energy 水下机器人近场感知与速度评估由深度学习辅助的仿海豹胡须传感器实现

摘要&#xff1a;本研究设计了一种仿生水下摩擦电胡须传感器&#xff0c;可被动感知多种水动力流场&#xff0c;有望成为水下航行器在本地导航任务中的整合工具。 北京大学与大连海事大学研究团队共同设计了一种深度学习辅助的仿生水下摩擦电胡须传感器&#xff08;underwater…

【计算机图形学】3DIT的训练数据总结

3D Implicit Transporter用的是PartNet-Mobility数据集&#xff0c;我想用Shape2Motion数据集&#xff0c;但是3DIT是所有类别的数据扔一起训练的&#xff0c;为了避免到时候弄3DIT数据忘记了&#xff0c;我在这里记录一些点云数据训练的东西。方便之后用3DIT来训练BaseLine 1…

华为OD机试 - 最大社交距离 - TreeSet(Python/JS/C/C++ 2024 C卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

ssm087会议管理系统ssm(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;会议管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本会议管理系统就是在这…

深⼊理解指针(5)[回调函数、qsort相关知识(qsort可用于各种类型变量的排序)】

目录 1. 回调函数 2. qsort相关知识&#xff08;qsort可用于各种类型变量的排序&#xff09; 一 回调函数 1定义/作用:把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#xff0c;被调⽤的函数就…