企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# :-: **STL(模板库)简介** * [STL](https://baike.baidu.com/item/STL/70103?fr=aladdin)是Standard Template Library的简称,它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。 * 从根本上说,STL是一些**容器**的集合,这些**容器**有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的**容器**和算法的集合指的是世界上很多聪明人很多年的杰作。 * STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用安装额外的库文件。 --- ### **为什么要学STL呢?** * 方便。比如你要实现一个链式队列,以及它的一系列功能,你需要敲几十乃至上百行代码,还要投入精力debug,可在STL里,给你做好现成的queue你用不用?现成的快排你用不用?平均复杂度**O(nlogn)**的排序只要几句话,手写一个冒泡也得好几行吧?还卡时。 --- ### **一些常用的容器** * 向量(vector) 连续存储的元素\<vector> * 映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 \<map> * 集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 \<set> * 字符串(string)表示可变长的字符串,它在头文件string里面 * 栈(stack) 后进先出的值的排列 \<stack> * 队列(queue) 先进先出的执的排列 \<queue> * 优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 \<queue> #### **不常用的** * 多重集合(multiset) 允许存在两个次序相等的元素的集合 \<set> * 列表(list) 由节点组成的双向链表,每个结点包含着一个元素\<list> * 双队列(deque) 连续存储的指向不同元素的指针所组成的数组\<deque> * 多重映射(multimap) 允许键对有相等的次序的映射 \<map> #### **代码规范:** ``` c #include<vector> //比如vector,当然<>里边可以换成map,set,string... using namespace std; ``` `另外两个队友今天出去吃饭了,队友请客 我没去我好伤心`