快捷键

切换暗色模式 CtrlD
搜索 CtrlK
关闭弹窗 Esc
返回顶部 Ctrl
快捷键面板 Ctrl/
C++信息学奥赛打字闯关
首页 闯关训练 段位系统 题库中心
技术博客 新闻资讯
排行榜 信奥社区 成就殿堂 在线留言 AI助手
📑 文章目录

C++ STL 高效使用指南:竞赛中你必须掌握的 STL 容器

❤️ 1280 点赞
💬 0 评论
👁️ 45632 阅读
🔄 更新于 2026-09-17 00:51

在信息学竞赛中,熟练使用 STL 可以大幅提升编码效率。本文详细介绍竞赛高频使用的 STL 容器和算法。

1. vector(动态数组)

vector<int> v = {1, 2, 3};
v.push_back(4);      // 尾部插入 O(1) 均摊
v.pop_back();        // 尾部删除 O(1)
sort(v.begin(), v.end());  // 排序
v.erase(unique(v.begin(), v.end()), v.end()); // 去重

支持随机访问,是竞赛中使用频率最高的容器。

2. pair / tuple
pair<int, int> p = {1, 2};
// 用于需要同时存储两个值的情况,比如坐标、优先级+值
vector<pair<int, int>> v; // 常用于多关键字排序


3. set / map(有序关联容器)
  • 基于红黑树实现,操作 O(log n)

  • set:有序集合,元素唯一

  • multiset:可重复的有序集合

  • map:键值对映射

  • 支持 lower_bound / upper_bound


4. unordered_set / unordered_map(哈希容器)
  • 基于哈希表,均摊 O(1)

  • 注意:可能被卡哈希(CF 上有些题专门卡 unordered_map)


5. priority_queue(优先队列)
  • 默认大根堆

  • 小根堆:priority_queue<int, vector<int>, greater<int>>

  • 用于 Dijkstra、贪心等算法


6. stack / queue / deque
  • stack:栈(DFS 非递归)

  • queue:队列(BFS)

  • deque:双端队列(滑动窗口最值)


7. string 常用操作
  • substr, find, replace

  • to_string / stoi / stoll 类型转换


8. algorithm 常用函数
  • sort, stable_sort

  • lower_bound, upper_bound, binary_search

  • next_permutation(全排列)

  • nth_element(第k小)

  • unique, reverse, rotate, shuffle

💬 评论 (0)

暂无评论,快来抢沙发吧~ 🛋️

在线

给管理员留言

每条留言老师都会认真阅读并回复

📚 课程咨询 🔧 技术求助 💡 建议反馈 🤝 合作联系

留言发送成功!

您的留言已送达管理员后台

追踪码(请保存以便查询回复)
------