STL

c++标准模板库

STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来

的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 

STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类 

组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。 

STL由一些可适应不同需求的集合类(collectionclass),以及在这些数据集合上操作的算法(algorithm)构成。所有组件都由模板(template)构成,其元素可以是任意类型

1. STL组件

容器(Container) - 管理某类对象的集合

迭代器(Iterator) - 在对象集合上进行遍历

算法(Algorithm) - 处理集合内的元素

容器适配器(container adaptor)

函数对象(functor)

 

2.  STL容器类别

序列式容器-排列次序取决于插入时机和位置

关联式容器-排列顺序取决于特定准则

3.  STL容器的共同能力

所有容器中存放的都是值而非引用。如果希望存放的不是副本,容器元素只能是指针。

所有元素都形成一个次序(order),可以按相同的次序一次或多次遍历每个元素

4.  STL容器元素的条件

必须能够通过拷贝构造函数进行复制

必须可以通过赋值运算符完成赋值操作

必须可以通过析构函数完称销毁动作

序列式容器元素的默认构造函数必须可用

某些动作必须定义operator ==,例如搜寻操作

关联式容器必须定义出排序准则,默认情况是重载operator <

5. STL容器的共同操作

初始化 产生一个空容器    std::list<int> l;

以另一个容器元素为初值完成初始化    

std::list<int> l;

std::vector<float>c(l.begin(),l.end());

 

以数组元素为初值完成初始化

int array[]={2,4,6,1345};

std::set<int>c(array,array+sizeof(array)/sizeof(array[0]));

  与大小相关的操作(size operator)

size()-返回当前容器的元素数量

empty()-判断容器是否为空

max_size()-返回容器能容纳的最大元素数量

比较(comparison)

==,!=,<,<=,>,>=

比较操作两端的容器必须属于同一类型

如果两个容器内的所有元素按序相等,那么这两个容器相等

采用字典式顺序判断某个容器是否小于另一个容器

链接:https://blog.csdn.net/xxh20171777/article/details/80469592

posted on 2018-09-06 10:15  AI大道理  阅读(207)  评论(0编辑  收藏  举报

导航