学习 C++ 中的 set、unordered_set 和 priority_queue

发布: (2026年1月6日 GMT+8 01:42)
1 min read
原文: Dev.to

Source: Dev.to

set

概述

  • 唯一 + 已排序的数据
  • 存储唯一元素
  • 保持排序顺序
  • 使用自平衡二叉搜索树(红黑树)实现

示例

std::set

#include 
#include 

int main() {
    std::set s = {3, 1, 2, 2};
    for (int x : s) std::cout 
}

std::unordered_set

#include 

int main() {
    std::unordered_set us = {3, 1, 2, 2};
    for (int x : us) std::cout 
}

std::priority_queue(最大堆)

int main() {
    std::priority_queue pq;
    pq.push(3);
    pq.push(1);
    pq.push(5);
    std::cout 
}

使用 std::greater 的最小堆

#include 
#include 

std::priority_queue, std::greater> minHeap;

时间复杂度

  • 插入 / 删除:O(log n)
  • 访问顶部元素:O(1)
  • 空间:O(n)

适用场景

  • 需要第 k 大或第 k 小的元素
  • 重复的最大/最小值提取
  • 调度与贪心问题
Back to Blog

相关文章

阅读更多 »

第0天:开始我的DSA之旅

第0天 – 规划、心态与承诺 - 目标:在 problem‑solving 方面变得强大并做好 interview‑ready 准备 - 起始水平:初学者 / 复习基础 - 每日承诺…