简述C++中STL标准模板库

来源:互联网 发布:电脑发短信软件 编辑:程序博客网 时间:2024/04/25 09:47

关于STL的详细内容,这篇博客描述的非常清楚:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/22/2603525.html

STL:Standard Template Library,标准模版库。

STL六大组件:

容器(Container),是一种数据结构,如list,vector,deques,以模版类的方法提供。

迭代器(Iterator),提供了访问容器中对象的方法。迭代器就如同一个指针。

算法,用来操作容器中的数据的模板函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象,函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用。

其它略。


STL容器:

1)序列式容器:vector、deque、list

vector:将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时。

deques:双端队列。可以随机存取元素(用索引直接存取),数组头部和尾部添加或移除元素都非常快速。但是在中部或头部安插元素比较费时。

list:双向链表。不提供随机存取(按顺序走到需存取的元素,O(n)),在任何位置上执行插入或删除动作都非常迅速,内部只需调整一下指针。

2)关联式容器:元素位置取决于特定的排序准则,和插入顺序无关,set、multiset、map、multimap

set/multiset:内部的元素依据其值自动排序,set内的相同数值的元素只能出现一次。multiset内可包含多个数值相同的元素,内部由二叉树实现,便于查找。

map/multimap:map的元素是成对的键值/实值,内部的元素依据其自动排序,map内的相同数值的元素只能出现一次。multimap内可包含多个数值相同的元素。内部由二叉树实现,便于查找。

另外有其他容器hash_map,hash_set,hash_multiset,hash_multimap。

STL迭代器:

用于提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

迭代器一般声明使用示例:

vector<T>::iterator it;list<T>::iterator it;deque<T>::iterator it;


数据结构 

 

实现头文件 

向量(vector)

顺序性容器

<vector>

列表(list)

顺序性容器

<list>

双队列(deque)

顺序性容器

<deque>

集合(set)

关联容器

<set>

多重集合(multiset)

关联容器

<set>

栈(stack)

容器适配器

<stack>

队列(queue)

容器适配器

<queue>

优先队列(priority_queue)

容器适配器

<queue>

映射(map)

关联容器

<map>

多重映射(multimap)

关联容器

<map>






0 0