#6553. 2026/4/20/周一下午班级笔记(set+queue)

2026/4/20/周一下午班级笔记(set+queue)

C++ STL 常用容器笔记:queue 与 set


一、队列(queue

1. 核心特点

  • 遵循 先进先出(FIFO, First In First Out) 原则
  • 仅支持在队尾插入元素,在队首删除元素

2. 常用操作(结合代码示例)

queue<int> q;
操作代码 功能说明
q.push(10) 队尾插入元素 10
q.front() 获取队首元素(仅读取,不删除该元素)
q.pop() 删除队首元素(无返回值,需配合 front() 获取被删元素)
q.size() 返回队列中当前的元素个数

代码执行流程示例:

q.push(10); // 队列:[10]
q.push(20); // 队列:[10, 20]
q.push(30); // 队列:[10, 20, 30]
q.front();  // 返回 10(队列仍为 [10, 20, 30])
q.pop();    // 队列变为:[20, 30]
q.size();   // 返回 2

二、集合(set

1. 核心特点

  • 元素唯一(自动去重,重复插入无效)
  • 元素有序(默认按升序排列,底层通常为红黑树)
  • 插入、删除、查找操作的时间复杂度均为 O(log n)

2. 常用操作(结合代码示例)

set<int> s;
操作代码 功能说明
s.insert(10) 向集合插入元素 10(若已存在则忽略该次插入)
s.size() 返回集合中当前的元素个数
s.count(40) 判断元素 40 是否存在(返回 1 表示存在,0 表示不存在)
s.erase(10) 从集合中删除元素 10(若不存在则无操作)
for(auto x : s) 范围遍历集合(按升序依次访问每个元素)

代码执行流程示例:

s.insert(10); // 集合:{10}
s.insert(10); // 重复插入,集合仍为:{10}
s.insert(20); // 集合:{10, 20}
s.insert(30); // 集合:{10, 20, 30}
s.size();     // 返回 3(自动去重)
s.count(40);  // 返回 0(40 不存在)
s.erase(10);  // 集合变为:{20, 30}
// 遍历输出:20 30
for(auto x : s){
    cout << x << " ";
}

三、适用场景总结

  • queue:适用于“按顺序处理任务”的场景(如消息队列、广度优先搜索 BFS)。
  • set:适用于“元素去重 + 快速查找/排序”的场景(如数据统计、去重存储)。