STL deque容器
deque - 双向队列
1.队列的基本知识
队列的基本特性就是先进先出(FIFO),也就是第一个进去的元素第一个出来。即队列就是一个只允许在一端进行插入,在另一端进行删除操作的线性表。Queue接口与List、Set同一级别,都是继承了Collection接口。
2.队列按照实现方式也分为两种:
①单向队列(Queue):只能在一段插入数据,另一端删除数据。
②双向队列(Deque):每一段都可以进行插入数据和删除数据的操作。
3.双向队列(LinkedList实现了Deque接 口)
双向队列是一个线性Collection,既然是线性表,按照存储方式那就有两种:基于数组的顺序存储方式和基于链表的链式存储方式。支持在两端插入和移出元素。Deque是(double ended queue)双端队列的缩写,通常读为deck。大多数的Deque实现对于他们能够包含的元素数没有固定的限制,但是此接口即支持有容量限制的双端队列,也支持没有固定大小限制的双端队列。此接口提供了两端访问元素的方法,提供了插入,删除和检查元素的方法。
1.构造
无参构造:
deque<T> a; //<>内自定义数据类型;
带参构造:
deque(beg,end); //构造函数将[beg, end)区间中的元素拷贝给本身。注意该区间是左闭右开的区间。
deque(n,elem); //构造函数将n个elem拷贝给本身。
deque(const deque &deq); //拷贝构造函数。
2.头部&尾部的添加和删除
deque.push_back(elem); //在容器尾部添加一个数据
deque.push_front(elem); //在容器头部插入一个数据
deque.pop_back(); //删除容器最后一个数据
deque.pop_front(); //删除容器第一个数据
3.中间数据存取
deque.at(idx); //返回索引idx所指的数据,如果idx越界,抛出out_of_range。
deque[idx]; //返回索引idx所指的数据,如果idx越界,不抛出异常,直接出错。
deque.front(); //返回第一个数据。
deque.back(); //返回最后一个数据
4.元素插入
deque.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
deque.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
deque.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
5.数据删除
deque.clear(); //移除容器的所有数据
deque.erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
deque.erase(pos); //删除pos位置的数据,返回下一个数据的位置。
6.迭代指针
deque.begin(); //返回容器中第一个元素的迭代器。
deque.end(); //返回容器中最后一个元素之后的迭代器。
deque.rbegin(); //返回容器中倒数第一个元素的迭代器。
deque.rend(); //返回容器中倒数最后一个元素之后的迭代器。
7.赋值&拷贝
deque.assign(beg,end); //将[beg, end)区间中的数据拷贝赋值给本身。注意该区间是左闭右开的区间。
deque.assign(n,elem); //将n个elem拷贝赋值给本身。
deque& operator=(const deque &deq); //重载等号操作符
deque.swap(deq); // 将vec与本身的元素互换
8.大小&判断非空
deque.size(); //返回容器中元素的个数
deque.empty(); //判断容器是否为空
deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
本文作者:PassName
本文链接:https://www.cnblogs.com/spaceswalker/p/16025689.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步