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

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

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

相关文章:

  • IEEE 会议论文作者信息Latex模板
  • 【Bluedroid】AVRCP 连接源码分析(一)
  • VUE四:Vue-cli
  • flink系列之:使用flink cdc3从mysql数据库同步数据到doris和starrocks
  • QEMU源码全解析 —— 内存虚拟化(17)
  • 计算机网络-面试总结
  • 常用高压缩率的视频容器格式,并进行大比例压缩
  • Windows 上源码安装 FastGPT
  • S7-1200如何利用时钟存储器做震荡电路
  • QQ登录测试用例报告
  • 大模型SFT有监督微调教程
  • Java Web开发实战与项目——开发一个在线论坛系统
  • 在其他位置调用Static结构
  • mysql之事务深度解析与实战应用:保障数据一致性的基石
  • PTA:运用顺序表实现多项式相加
  • 【洛谷排序算法】P1012拼数-详细讲解
  • BFS 和 DFS(深度优先搜索、广度优先搜索)
  • 【超详细】神经网络的可视化解释
  • 优品指标树
  • 【项目设计】自主HTTP服务器
  • 福州交警:一小型汽车因操作不当撞上汽车和电动车,致2人死亡
  • 5月1日全国铁路发送旅客2311.9万人次,创历史新高
  • 讲武谈兵|朝鲜“崔贤”号驱逐舰下水,朝版“宙斯盾”战力如何?
  • 亚马逊拟为商品标注“关税成本”,特朗普致电贝索斯讨说法
  • 比黄油年糕热量还高,这个火爆全网的甜品劝你慎吃
  • 大型长读长RNA测序数据集发布,有助制定精准诊疗策略