STL deque用法
Deque 容器
deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。
使用deque容器之前必须加上<deque>头文件:#include<deuqe>;
deque属于std命名域的内容,因此需要通过命名限定:using std::deque;也可以直接使用全局的命名空间方式:using namespace std;
构造函数
deque<Elem> c 创建一个空的deque
deque<Elem> c1(c2) 复制一个deque。
deque<Elem> c(n) 创建一个deque,含有n个数据,数据均已缺省构造产生。
deque<Elem> c(n, elem) 创建一个含有n个elem拷贝的deque。
deque<Elem> c(beg,end) 创建一个以[beg;end)区间的deque。
~deque<Elem>() 销毁所有数据,释放内存。
成员函数
c.begin()返回指向第一个元素的迭代器
c.end()返回指向最后一个元素下一个位置的迭代器
1
deque<int> d {,,,,}; deque<int>::iterator it; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl;
c.rbegin()返回指向反向队列的第一个元素的迭代器(即原队列的最后一个元素)
c.rend()返回指向反向队列的最后一个元素的下一个位置(即原队列的第一个元素的前一个位置)
1
deque<int> d {,,,,}; deque<int>::reverse_iterator it; for(it=d.rbegin();it!=d.rend();it++){ cout << *it << " "; } cout << endl;
operator=赋值运算符重载
1
deque<int> d1 {,,,,},d2; d2 = d1; deque<int>::iterator it; for(it=d2.begin();it!=d2.end();it++){ cout << *it << " "; } cout << endl;
c.assign(n,num)将n个num拷贝复制到容器c
c.assign(beg,end)将[beg,end)区间的数据拷贝复制到容器c
1
deque<int> d1 {,,,,},d2; d2.assign(, ); deque<int>::iterator it; cout << "d2.assign(n,num):"; for(it=d2.begin();it!=d2.end();it++){ cout << *it << " "; } d2.assign(d1.begin(), d1.begin()+); cout << "d2.assign(beg,end):"; for(it=d2.begin();it!=d2.end();it++){ cout << *it << " "; } cout << endl;
c.at(pos)返回索引为pos的位置的元素,会执行边界检查,如果越界抛出out_of_range异常
1
deque<int> d {,,,,}; cout << "d.at(pos):" << d.at(); return ;
c.operator[]下标运算符重载
1
deque<int> d {,,,,}; cout << "d[2]:" << d[]; return ;
c.empty()判断c容器是否为空
1
deque<int> d {,,,,}; if(!d.empty()){ cout << "d is not empty!" << endl; }else{ cout << "d is empty!" << endl; } return ;
c.front()返回c容器的第一个元素
c.back()返回c容器的最后一个元素
1
deque<int> d {,,,,}; if(!d.empty()){ cout << "d.front():" << d.front() << endl; cout << "d.back(): " << d.back() << endl; }
c.size()返回c容器中实际拥有的元素个数
1
deque<int> d {,,,,}; cout << "d.size():" << d.size() << endl; return ;
c.max_size()返回c容器可能存放元素的最大数量
1
deque<int> d {,,,,}; cout << "d.max_size():" << d.max_size() << endl; return ;
c.clear()清除c容器中拥有的所有元素
1
deque<int> d {,,,,}; deque<int>::iterator it; cout << "clear before:" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl; d.clear(); cout << "clear after:" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl;
c.insert(pos,num)在pos位置插入元素num
c.insert(pos,n,num)在pos位置插入n个元素num
c.insert(pos,beg,end)在pos位置插入区间为[beg,end)的元素
1
deque<int> d {,,,,}; deque<int>::iterator it; cout << "insert before:" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl; d.insert(d.end(),); d.insert(d.end(), ,); int a[] = {,,,,}; d.insert(d.begin(),a,a+); cout << "insert after:" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl;
c.erase(pos)删除pos位置的元素c.erase(beg,end)删除区间为[beg,end)的元素
c.erase(beg,end)删除区间为[beg,end)之间的元素
1
deque<int> d {,,,,}; d.erase(d.begin()); deque<int>::iterator it; cout << "erase(pos) after:" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl; d.erase(d.begin(), d.begin()+); cout << "erase(beg,end) after:" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl;
c.push_back(num)在末尾位置插入元素
c.pop_back()删除末尾位置的元素
c.push_front(num)在开头位置插入元素
c.pop_front()删除开头位置的元素
1
deque<int> d {,,,,}; d.push_back(); deque<int>::iterator it; cout << "push_back(num):" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl; d.pop_back(); cout << "pop_back(num):" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl; d.push_front(); cout << "push_front(num):" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl; d.pop_front(); cout << "pop_front(num):" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl; return ;
c.resize(num)从新定义容器的大小
1
deque<int> d {,,,,}; cout << "d.size():" << d.size() << endl; d.resize(d.size()+); cout << "d.resize() after:" << d.size() <<endl; deque<int>::iterator it; cout << "resize() after:" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl;
c1.swap(c2)交换容器c1,c2;
swap(c1,c2)同上。
1
deque<int> d1 {,,,,},d2,d3; d1.swap(d2); deque<int>::iterator it; cout << "d1 swap after:" ; for(it=d1.begin();it!=d1.end();it++){ cout << *it << " "; } cout << endl; cout << "d2 swap after:" ; for(it=d2.begin();it!=d2.end();it++){ cout << *it << " "; } cout << endl; swap(d3,d2); cout << "d3 swap after:" ; for(it=d3.begin();it!=d3.end();it++){ cout << *it << " "; } cout << endl;
重载运算符
operator==
operator!=
operator<
operator<=
operator>
operator>=
STL deque用法的更多相关文章
- 浅谈C++ STL deque 容器
浅谈C++ STL deque 容器 本篇随笔简单介绍一下\(C++STL\)中\(deque\)容器的使用方法及常见使用技巧. deque容器的概念 \(deque\)的意义是:双端队列.队列是我们 ...
- STL vector用法介绍
STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...
- STL deque详解
英文原文:http://www.codeproject.com/Articles/5425/An-In-Depth-Study-of-the-STL-Deque-Container 绪言 这篇文章深入 ...
- STL Deque 容器
STL Deque 容器 Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双 端的,而vector是单端的. ...
- STL之deque用法详解
C++ Deque(双向队列): Deque是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用 ...
- STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map
list vector deque stack queue priority_queue set [unordered_set] map [unordered_map] multimap [uno ...
- STL:deque用法详解
deque函数: deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素.但它又与vector不同,deque支持高效插入和 ...
- STL之三:deque用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8519812 deque函数: deque容器为一个给定类型的元素进行线性处理,像向量 ...
- STL之deque用法
deque:双端队列 底层是一个双向链表. 常用的有队列的尾部入队.首部出队. 普通队列:queuequeue 模板类的定义在<queue>头文件中.与stack 模板类很相似,queue ...
随机推荐
- Inno Setup入门(二)——修改安装过程中的图片
修改安装过程中的图片 一般编译之后,安装过程中出现在左边图片是是下图这个样子的: 其实也可以修改它,只需要在setup段中作一点稍微的修改,加一行代码即可: [setup] AppName=Test ...
- 纯C++去雾算法
去雾算法 前言:经过不断的改进研究,该算法最终稳定,高效的问世了. 经过研究使该算法适应大雾环境,对该算法的内存优化,可以实时的高效的执行. 一.实时视频: watermark/2/text/aHR0 ...
- 向Kubernetes集群删除Node
Kubernetes集群中移除Node在master节点上执行: kubectl drain swarm1 --delete-local-data --force --ignore-daemonset ...
- SSD 为什么顺序写比随机写性能更好?
SSD以Page为单位做读写,以Block为单位做垃圾回收,Page一般有16KB大小,Block一般有几十MB大小,SSD写数据的逻辑是: 1)将该块数据所在的Page读出 2)修改该Page中该块 ...
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。
查看:http://blog.csdn.net/simunlin/article/details/71123279
- Soapui groovy 加载外部property文件
proFile = "c:\\test.properties" log.info proFile props = new java.util.Properties() props. ...
- 简单获取cpu使用率,以及后台运行的问题
做了一个运维平台,有一个功能定时执行一个脚本,获取cpu使用率和内存使用情况到监控平台. 获取cpu使用率使用的是top中的信息.直接运行没有问题.通过nohup xxx.sh & 之后获取不 ...
- MySQL中模拟oracle中的rownum列
mysql> select @rn := @rn + 1 as rownum, emp_no, dept_no, from_date, to_date -> from dept_emp, ...
- WSAAsyncSelect模型中,FD_WRITE事件什么时候触发?
当一个套接字连接被建立上时(包括客户端的connect(),connectex()等和服务器端的accept接收到后创建的新套接字),这时会触发FD_WRITE,以后就可以用send(),WSASen ...
- Python 文件 next() 方法
描述 Python 3 中的 文件 对象不支持 next() 方法. Python 3 的内置函数 next() 通过迭代器调用 __next__() 方法返回下一项. 在循环中,next()方法会在 ...