C++ 语言的一大魅力就是优雅的 STL 容器,它们封装了你可能用到的常见数据结构,提供了方便快捷的解决方案。
| 容器 | 功能 |
|---|---|
vector<> |
尾部可变长数组,可代替 stack<>方便调试 |
string |
C++ 风格的字符串,也支持尾部的栈操作 |
queue<> |
队列 |
priority_queue<> |
堆(优先队列) |
unordered_map<> |
键值对哈希表(C++11前可用map<>代替,操作均为 |
unordered_set<> |
哈希集合(C++11前可用set<>代替,操作均为 |
set<> |
去重有序集合,支持遍历 |
pair<,> |
存储两个可以为不同类型的元素 |
以上 STL 容器是竞赛代码中经常使用的,这些容器的操作简单,也可有效节省代码篇幅,对执行速度的影响也不大,我们通常很乐意采用。
虽然 C++ 库是解决问题的好帮手,它们在本质上只是辅助工具,并不能成为解决问题的关键。熟悉语言的意思,不仅仅是熟悉它直接提供的接口,更是运用它解决你的问题的能力。你需要在不断实际编码、学习他人代码的过程中,练习写出简洁有效,思路清晰的代码,尽可能保证准确性。
