C++ STL 简介

什么是STL

STL全程为standard template library 即标准模板库,是由惠普实验室开发的一系列软件的统称。
STL可分为容器、迭代器、空间配置器、配接器、算法和伪函数六个部分。


下面来简单的介绍下比较常用的容器,迭代器和算法部分。

容器

STL中提供了很多的容器,即数据存储结构。这些存储结构各有优缺点,STL在底层实现中做了很多的优化,最终封装成了12个模板,在这先做一个简单的介绍,后续我们再详细的介绍各个容器的用处与用法。

容器名称容器介绍头文件
向量(vector)连续存储的元素(也有地方称作可变长数组)vector
列表(list)由结点组成的双向链表,每个结点包含着一个元素list
双端队列(deque)连续存储的指向不同元素的指针所组成的数组deque
栈(stack)后进先出的队列stack
队列(queue)先进先出的队列queue
优先队列(priority_queue)元素的次序是由作用于所存储的值对上的某种谓词决定的一种队列queue
集合(set)由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素队的谓词排列,没有两个不同的元素值set
多重集合(multiset)允许两个元素值相等的元素集合set
映射(map)(由{键:值}对组成的集合,以某种作用于键对上的谓词排列map
多重映射(multimap)允许有相同键值对的映射map
对(pair)和map相似,但只有一对键值utility
智能指针(auto_pyr)将一个用new开辟内存的指针赋给auto_ptr,会自动回收空间memory

迭代器

迭代器在STL中的作用是将算法和容器联系起来,起着一种粘合剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素.
例如:

for (set<int>::iterator it = all_ans.begin() ; it != all_ans.end(); it++) {
        cout<<*it;
        if(i % 6 == 0)
            cout<<endl;
        else
            cout<<" ";
        i++;
        
    }

这段代码中的it就是set的一个迭代器,相当于指针的作用。STL算法中的参数以及返回值多数为迭代器。

算法

STL中封装了大量的常用算法,这些算法都是经过优化之后的算法。例如sort()排序算法,swap()交换,next_permutation()全排列等等。STL中提供了大约100个实现算法的模板函数。其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移出、反转、排序、合并等等。后续我们再将常用的模板函数进行详细的介绍

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐