C++ 语言的一大魅力就是优雅的 STL 容器,它们封装了你可能用到的常见数据结构,提供了方便快捷的解决方案。

    容器 功能
    vector<> 尾部可变长数组,可代替 stack<>
    方便调试
    string C++ 风格的字符串,也支持尾部的栈操作
    queue<> 队列
    priority_queue<> 堆(优先队列)
    unordered_map<> 键值对哈希表(C++11前可用map<>
    代替,操作均为3.1 熟练运用语言 - 图1#card=math&code=O%28%5Clog%20n%29&id=v860u))
    unordered_set<> 哈希集合(C++11前可用set<>
    代替,操作均为3.1 熟练运用语言 - 图2#card=math&code=O%28%5Clog%20n%29&id=N95ZT))
    set<> 去重有序集合,支持遍历
    pair<,> 存储两个可以为不同类型的元素

    以上 STL 容器是竞赛代码中经常使用的,这些容器的操作简单,也可有效节省代码篇幅,对执行速度的影响也不大,我们通常很乐意采用。

    虽然 C++ 库是解决问题的好帮手,它们在本质上只是辅助工具,并不能成为解决问题的关键。熟悉语言的意思,不仅仅是熟悉它直接提供的接口,更是运用它解决你的问题的能力。你需要在不断实际编码、学习他人代码的过程中,练习写出简洁有效,思路清晰的代码,尽可能保证准确性。