STL模板库
STL是Standard Template Library的简称,中文名标准模板库,由惠普实验室提供。
分类以下内容:
容器:常用的数据结构,可以存放任何类型的数据。
算法:一常用的算法,比如:查找,排序,比较,拷贝等。
迭代器:用来帮助访问容器工具,使用方式与指针类型。
向量容器:
头文件: vector
采用连续的内存来存储数据,通过下标来随机访问,也被称为数组容器。
优点:会随着元素增加而自动扩大内存,也就是真正童意义上的自动变长的数组。
集合容器:
头文件: set
元素不能重复,且会自动排序的容器。
如果元素是自定义对象必须要支持,<运算符
栈和队列容器:
头文件: stack queue
只具备栈和队列的基本功能,它们没有迭代器。
底层是链式的存储结构。
优先队列:
头文件:queue
类名:priority_queue
按照比较规则,对新加入的元素进行排序。
出队的时候必须按照从大到小或从小到的顺序。
基本类型默认是从大到小的顺序,要想改变需要提供具有比较功能()运算符类。
自定义类型需要实现 < 运算符。
多元集合:
头文件:set
类名:multiset
与集合的功能基本一样,只是允许元素重复。
如果元素是自定义对象必须要支持,<运算符
count、equal_range、lower_bound、upper_bound
链表容器:
头文件:list
是一个功能齐全的链表容器,是最常用的容器之一。
它有排序成员函数,因此自定义类型要实现 < 运算符。
关联容器:
头文件:map
是一种 由key-value 成对组成元素的容器,key的值不能重复。
key的值就相当于下标,可以当作访问value的凭证。
能够根据key值快速的查询出value,它底层数据结构是红黑树,因此查询效率非常高。
多重关联:
头文件:map
类名:multimap
使用方法与map基本一致,区别就是key可以对应多个value。
因此[]不能使用,与pair配合使用。
双端队列:
头文件:queue
类名:deque
它在头部和尾部都可以插入和删除,使用方法与向量类似。
支持[]运算符,可以随机访问里容器中的元素。
位集合:
是一种数据结构
可以方便的进行二进制的运算,并查看结果。
位运算符基本都支持。
算法:
max、min、sort、swap、find、for_each