push(x):将元素压入栈(顶)
pop():弹出(删除)顶端元素
queue
1.queue的基本概念
queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素。但除了最底端可以加入、最顶端可以取出,没有任何其他方法可以存取queue的其他元素。换言之,queue不支持随机访问。
STL以deque作为queue的底层结构,对deque封闭其底端的出口和前端的入口,稍作修改便形成了queue。
2.容器适配器队列类std::queue成员函数
#include
queue实现先进先出的操作
std::queue
type为队列操作的数据类型
container为实现队列所用的容器类型,只能为提供了push_front操作的std::deque或std::list,默认基于std::deque
其成员函数如下:
front():返回队首元素的引用
back():返回队尾元素的引用
push(x):把元素x推入(插入)到队尾
pop():队首元素出列(弹出(删除)队首元素)
priority_queue
1.priority_queue的基本概念
priority_queue为优先级队列,它允许用户为队列中存储的元素设置优先级。这种队列不是直接将新元素放置在队列尾部,而是放置在比它优先级低的元素前面,即提供了一种插队策略。标准库默认使用<操作符来确定他们之间的优先级关系。即权重大的排在队首。
使用priority_queue时,包含
2.容器适配器队列类std::priority_queue成员函数
#include
priority_queue实现先进先出的操作
std::priority_queue
type为队列操作的数据类型
container为实现队列所用的容器类型,可以为std::vector,std::deque,默认基于deque
comp为排队策略,默认为std::less<>,即插到小于它的元素前
例如std::priority_queue
其成员函数如下:
top():返回队首(优先级最高)元素的引用
push(x):将元素推入(按插队策略插排)队列(尾部)
pop():弹出(删除)队首(优先级最高)元素
关联式容器
所谓关联式容器,概念上类似关联式数据库(实际上则简单许多):每项数据(元素)包含一个键值(key)和一个实值(value)。当元素被插入到关联式容器中时,容器内部数据结构(可能是RB-tree,也可能是hash-table)便依照其键值大小,以某种特定规则将这个元素放置于适当位置。关联式容器没有所谓头尾(只有最大元素和最小元素),所以不会有push_back(),push_front(),pop_back(),pop_front(),begin(),end()这样的操作。
一般而言,关联式容器的内部结构是一个balanced binary tree(平衡二叉树),以便获得良好的搜索效率。balanced binary tree有很多种类型,包括AVL-tree、RB-tree、AA-tree,其中广泛运用于STL的是RB-tree(红黑树)。
标准的STL关联式容器分为set(集合)和map(映射类)两大类,以及这两大类的衍生体multiset(多键集合)和multimap(多键映射表)。这些容器的底层机制均以RB-tree完成(红黑树)。RB-tree也是一个独立容器,但并不开放给外界使用。
此外,SGI STL还提供了一个不在标准规格之列的关联式容器:hash table(散列表,哈希表),以及以此hash table为底层机制而完成的hash_set(散列集合)、hash_map(散列映射表)、hash_multiset(散列多键集合)、hash_multimap(散列多键映射表)。
map
关联式容器std::map成员函数
#include
map建立key-value映射
std::map
std::map
key为键值
value为映射值
comp可选,为键值对存放策略,例如可为std::less<>,键值映射对将按键值从小到大存储
其成员函数如下:
count():返回map中键值等于key的元素的个数
equal_range():函数返回两个迭代器――一个指向第一个键值为key的元素,另一个指向最后一个键值为key的元素
erase(i):删除迭代器所指位置的元素(键值对)
lower_bound():返回一个迭代器,指向map中键值>=key的第一个元素
upper_bound():函数返回一个迭代器,指向map中键值>key的第一个元素
find(key):返回键值为key的键值对迭代器,如果没有该映射则返回结束游标end()
注意map的[]操作符,当试图对于不存在的key进行引用时,将新建键值对,值为空。
通用算法(对以上STL均适用)
#include
1.非修正序列算法:
2.修正序列算法:
3.排序算法:
4.数值算法: