STL中deque,queue,stack,list的学习
(一):要点
1:容器deque的使用方法 
2:容器queue,stack的使用方法 
3:容器list的使用方法
(二)deque
1:deque简介
deque是“double-ended queue”的缩写,deque是双端的,vector是单端的。 
deque在接口上和vector相似,在许多操作的地方可以直接替换 
deque可以随机存取元素,支持索引值直接存取,使用[]或者是at()方法 
deque的头部和尾部添加和移除元素都非常快速,但是在中部插入元素或移除元素 
比较费时。
2:deque的构造 
//和vector基本相同
deque<int> de;3:deque头部和尾部添加或者是移除元素 
deque.push_back(ele) ; // 尾部添加元素 
deque.pop_back(); //尾部删除元素
deque.push_front(ele) ; //头部添加元素 
deque.pop_front(); //头部移除元素
4:deque的数据存取 
deque.at[index]; //返回索引index所指的数据,如果越界,会跑出out_of_range 
deque[index];//返回index所指的数据,越界的话,不会抛出异常
deque.front(); //返回第一个元素 
deque.back(); //返回最后一个元素
5:deque的迭代器 
deque.begin(); //返回容器中第一个元素的迭代器 
deque.end(); //返回容器中最后一个元素之后的迭代器
deque.rbegin(); //返回容器中倒数第一个元素的迭代器 
deque.rend(); //返回容器中倒数最后一个元素之后的迭代器
6:deque带参数的构造 
deque(beg,end); //构造函数将区间[beg,end)区间的元素拷贝给本身, 
//注意是左闭右开
deque(n,ele); //构造函数将n个ele拷贝给本身
deque(const deque &deq); //拷贝构造函数
7:deque的赋值 
deque.assign(beg,end); 
deque.assign(n,ele);
deque& operator=(const deque &deq);
deque.swap(deq); //将vec与本身的元素互换
8:deque的大小 
包括size(),empty(),resize()
9:deque的插入 
与vector是一样的
10:deque的删除 
包括clear(),erase()等方法,与vector是一样的。
(三)、queue 队列 
1:简介 
queue 是队列容器,是一种“先进先出”的容器 
queue是简单的装饰deque容器而成为另外一种容器。
2:构造函数与vector和deque是一样的
3:queue的push和pop操作 
由于queue是单向的,一个口插入,一个口输出 
queue.push(ele);  //在后面插入一个元素 
queue.pop(); //在前面弹出一个元素 
例子:
queue<int> que;
que.push(10);
que.push(20);
que.push(30);则插入之后,效果为: 
则执行 
que.pop(); 
que.pop(); 
que.pop(); 
输出的效果为10,20,30 
 
4:queue的拷贝,构造和复制 
基本上和vector和qedue是一样的
5:queue的数据存取
deque.back(); //获取最后一个元素 
deque.front(); //获取第一个元素
6: queue的大小 
queue.size();  //元素个数 
queue.empty(); // queue是否为空
(四):stack 
1:简介 
stack是先进后出
2:stack的拷贝,构造和复制都是一样的
3:函数基本上和queue是一样的 
4:举例
stack<int> s;
s.push(10);
s.push(20);
s.push(30);则执行: 
s.pop(); 
s.pop(); 
s.pop(); 
输出的结果为: 
30,20,10 
(五):list容器
1:简介
list是一个双向链表容器,可高效的进行插入删除元素 
list不可以随机存取元素,所以不支持at(pos)函数和[]操作
2: 事前准备
#include <list>
using namespace std;3:list头尾的添加移除操作
list.push_back(ele) ; // 尾部添加元素 
list.pop_back(); //尾部删除元素
list.push_front(ele) ; //头部添加元素 
list.pop_front(); //头部移除元素
4:list与迭代器 
list.begin(); //返回容器中第一个元素的迭代器 
list.end(); //返回容器中最后一个元素之后的迭代器
list.rbegin(); //返回容器中倒数第一个元素的迭代器 
list.rend(); //返回容器中倒数最后一个元素之后的迭代器
5:赋值,大小,插入,删除等等都是一样的
不过在删除操作中多了一个remove元素: 
list.remove(ele); 
list.erase(index);
这两个方法的区别就是remove是删除所有与ele匹配的元素, 
而erase()函数是将指定位置的元素移除掉
6:list的反序
list.reverse(); //反序
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号