当前位置: 首页 > article >正文

C++STL容器之set

1.介绍

        set容器是C++标准模板库(STL)中的一个关联容器,用于存储唯一的元素。set中的元素是自动排序的,不允许重复。set通常基于红黑树(一种自平衡二叉查找树)实现,因此插入、删除和查找操作的时间复杂度都为O(log n)

2.set用法

        (1)定义和初始化

        set的定义和初始化可以通过以下方式完成:

                std::set<ElementType> mySet;

        例如,定义一个int类型的set:

std::set<int> mySet;

//定义时初始化
std::set<int> mySet = {1, 2, 3, 4, 5};

        (2)插入元素

mySet.insert(6);
mySet.insert(7);

        (3)删除元素

mySet.erase(3);  // 删除值为 3 的元素

        (4)查找元素

auto it = mySet.find(2);
if (it != mySet.end()) {
    std::cout << "Found: " << *it << std::endl;
} else {
    std::cout << "Not found" << std::endl;
}

        (5)遍历元素

for (auto it = mySet.begin(); it != mySet.end(); ++it) {
    std::cout << *it << std::endl;
}

for (const auto& element : mySet) {
    std::cout << element << std::endl;
}

        (7)其他常用操作

  • size():返回 set 中元素的数量。

  • empty():检查 set 是否为空。

  • clear():清空 set 中的所有元素。

  • count():返回 set 中特定元素的数量(对于 set,结果只能是 0 或 1)。

3.与unordered_set的区别

 特性setunordered_set
底层实现红黑树(平衡二叉搜索树)哈希表
元素顺序有序(默认升序)无序
查找时间复杂度O(log n)平均O(1),最坏O(n)
插入/删除时间复杂度O(log n)平均O(1),最坏O(n)
内存占用较低

较高(哈希表需要额外内存)

4.总结

       set 是一个非常有用的容器,适用于需要存储唯一元素并且需要快速查找、插入和删除操作的场景。由于它是有序的,因此在需要按顺序处理元素时也非常方便。

如有错误,敬请指正!!!


http://www.kler.cn/a/557535.html

相关文章:

  • matlab编写的不平衡磁拉力方程
  • 程序员本地网站(WEB)
  • 边缘计算在工程中的应用与实践
  • Unity实用技能-UI与粒子效果总结
  • NeurIPS-2024 | 具身智能如何理解空间关系?SpatialRGPT:视觉语言模型中的具象空间推理
  • vue-fastapi-admin 部署心得
  • 数据结构:实验题目:单链表归并。将两个非递减次序排列的单链表归并为一个非递增次序排列的单链表,并计算表长。要求利用原来两个单链表的结点存放合并后的单链表。
  • Java子类调用父类构造器的应用场景
  • HDFS Java 客户端 API
  • js版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]新特性
  • 【多模态处理篇一】【 深度解析DeepSeek图文匹配:CLIP模型迁移实战——从原理到落地的保姆级教程】
  • 前端面试-网络协议篇
  • 【Node.js】express框架
  • 图论 之 迪斯科特拉算法求解最短路径
  • 代码随想录D52-53 图论 Python
  • DeepSeek 全面分析报告
  • Verilog define预处理命令
  • strcpy与strncpy作为复制函数的用法与区别
  • Java中的Stream API:从入门到实战
  • Scrum方法论指导下的Deepseek R1医疗AI部署开发