C++基础-STL deque(双端队列)
deque 双端队列
1、特性:
在内存中不占有一块连续的空间,介于向量和列表之间,更接近向量,适用于从两端存取数据,可以使用[ ]直接存储数据。
2、适用情况:
可提供快速的元素存取,在序列中插入、删除速度较慢。
3、头文件
#include<deque>
4、复杂度
插入:push_front(),O(1);push_back(),O(1);insert(),O(N) 删除:pop_front(),O(1);pop_back(),O(1);erase(),O(N) 查找:O(1)
5、定义及初始化、常用函数
deque<int> d(10);
    d.push_front(1);//在容器前端添加元素
    d.push_back(2);//在后端添加元素
    d.pop_front();//前端删除
    d.pop_back();//后端删除
    d.insert(d.end(),3);//在尾部插入元素3
    d.erase(d.begin());//删除元素
    d.clear();//清除所有元素
    d.front();//返回前端元素的引用
    d.back();//返回末端元素的引用
    d.rbegin();//返回前端倒转迭代器
    d.max_size();//返回可存储的最大个数
    d.size();//返回当前元素个数
    d.empty();//为空返回true
    d.at(1);//返回第一个元素的引用
    deque<int> x;
    d.swap(x);//与容器x互换元素
    int m=d[1];//取出对应下标的元素 
6、获取元素
[ 下标]获取 迭代器遍历
for(deque<int>:: iterator it=d.begin();it!=d.end();it++)
    {
          
   
        cout<<*it<<endl;
    } 
7、例题
描述 请设计一个排队程序,用户有普通客人和 VIP 客人之分,VIP 客人不排队(即 VIP 客人在队列头部),请将已有的guest1和guest2放入队列中(guest1排在guest2前),并将VIP客人新增至队列头部。 输入描述: 无 输出描述: VIP客人姓名 guest1姓名 guest2姓名(每个客人的名字用空格隔开)
#include <iostream>
#include <deque>
using namespace std;
class Guest {
          
   
public:
    string name;
    bool vip;
    Guest(string name, bool vip) {
          
   
        this->name = name;
        this->vip = vip;
    }
};
int main() {
          
   
    Guest guest1("张三", false);
    Guest guest2("李四", false);
    Guest vipGuest("王五", true);
    deque<Guest> deque;
    // write your code here......
    deque.push_front(vipGuest);
    deque.push_back(guest1);
    deque.push_back(guest2);
    for (Guest g : deque) {
          
   
        cout << g.name << " ";
    }
    return 0;
}
				       
			          下一篇:
			            用Pygame制作简单的贪吃蛇 
			          
			        