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

    xiaoxiao2021-03-25  61

    关于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>

    转载请注明原文地址: https://ju.6miu.com/read-37181.html

    最新回复(0)