deque的用法
来源:互联网 发布:crossfit slash知乎 编辑:程序博客网 时间:2024/06/05 23:08
#include <stdio.h>#include <deque>#include <algorithm>using namespace std;class GreaterComp : public binary_function<const int&, const int&, bool>{public:result_type operator()(first_argument_type& _Left, second_argument_type& _Right){return _Left > _Right;}};int main(int argc, char** argv){//创建双向队列deque<int> deq;//往双向队列尾部加入元素,返回voiddeq.push_back(1);//往双向队列头部加入元素,返回voiddeq.push_front(2);//返回队列尾元素printf("deq.back(): %d\n", deq.back());//返回队列头部元素printf("deq.front(): %d\n", deq.front());//返回队列大小printf("deq.size(): %d\n", deq.size());//弹出队列尾deq.pop_back();//弹出队列头deq.pop_front();printf("deq.size(): %d\n", deq.size());//往队列尾插入元素deq.emplace_back(1);//往队列头插入元素deq.emplace_front(2);printf("deq.front(): %d, deq.back(): %d\n", deq.front(), deq.back());//往队列指定位置插入元素,返回指向插入元素的迭代器deque<int>::iterator iter = deq.emplace(deq.begin(), 3);printf("*iter: %d\n", *iter);printf("deq.front(): %d, deq.back(): %d\n", deq.front(), deq.back());//清空队列deq.clear();printf("deq.size(): %d\n", deq.size());deq.push_back(100);//在指定pos位置插入元素,返回指向插入元素的迭代器iter = deq.insert(deq.begin(), 1);printf("*iter: %d\n", *iter);printf("deq.front(): %d, deq.back(): %d\n", deq.front(), deq.back());printf("deq.size(): %d\n", deq.size());//在指定pos位置插入initializer_list,返回指向插入initializer_list第一个元素的迭代器iter = deq.insert(deq.begin(), { 1, 2, 3 });printf("*iter: %d\n", *iter);printf("deq.front(): %d, deq.back(): %d\n", deq.front(), deq.back());printf("deq.size(): %d\n", deq.size());deque<int> deqTemp;deqTemp.push_back(1);deqTemp.push_back(5);//在指定pos位置插入[iter1, iter2)之间的元素,返回指向插入[iter1, iter2)区间第一个元素的迭代器iter = deq.insert(deq.begin(), deqTemp.begin(), deqTemp.end());printf("*iter: %d\n", *iter);printf("deq.front(): %d, deq.back(): %d\n", deq.front(), deq.back());printf("deq.size(): %d\n", deq.size());//删除指定位置的元素,返回下一个位置的元素的迭代器, 需要删除的元素必须存在,否则会出错iter = deq.erase(deq.begin());printf("*iter: %d\n", *iter);iter = deq.erase(deq.begin(), deq.end());if (iter == deq.end())printf("end\n");deq.push_back(1);//返回pos位置的元素, 超出界限会引发out of range错误printf("deq.at(%d): %d\n", 0, deq.at(0));printf("max_size(): %d\n", deq.max_size());//resize重新界定元素的数量,超出补0,多出删除deq.resize(0);printf("size: %d\n", deq.size());deq.resize(100);printf("size: %d, back(): %d\n", deq.size(), deq.back());printf("empty(): %d\n", deq.empty());deq.clear();//operator[] 下标操作符在序列式容器中使用必须容器了这个下标已经存在元素,如果这个下标尚未初始化会出错//deq[0] = 1 出错deq.push_back(2);deq[0] = 10;printf("back(): %d\n", deq.back());deq.push_back(1);deque<int> jdeq;jdeq.push_back(-100);//给jdeq赋值jdeq.assign(deq.begin(), deq.end());printf("jdeq: ");iter = jdeq.begin();for (; iter != jdeq.end(); ++iter)printf("%d ", *iter);printf("\n");//排序sort(jdeq.begin(), jdeq.end());printf("jdeq: ");iter = jdeq.begin();for (; iter != jdeq.end(); ++iter)printf("%d ", *iter);printf("\n");deque<int> sort_deq;for (int i = 0; i < 10; i++)sort_deq.push_back(i);sort(sort_deq.begin(), sort_deq.end(), GreaterComp());iter = sort_deq.begin();for (; iter != sort_deq.end(); ++iter)printf("%d ", *iter);printf("\n");//初始化//deque<int> deq1(10);//deque<int> deq2(10, 1);//deque<int> deq3(deq1.begin(), deq1.end());//deque<int> deq4({ 1, 2, 3 });getchar();return 0;}
运行结果为:
deq.back(): 1deq.front(): 2deq.size(): 2deq.size(): 0deq.front(): 2, deq.back(): 1*iter: 3deq.front(): 3, deq.back(): 1deq.size(): 0*iter: 1deq.front(): 1, deq.back(): 100deq.size(): 2*iter: 1deq.front(): 1, deq.back(): 100deq.size(): 5*iter: 1deq.front(): 1, deq.back(): 100deq.size(): 7*iter: 5enddeq.at(0): 1max_size(): 1073741823size: 0size: 100, back(): 0empty(): 0back(): 10jdeq: 10 1jdeq: 1 109 8 7 6 5 4 3 2 1 0
0 0
- deque的用法
- deque的用法
- deque的用法
- deque的简单用法
- STL中deque的用法
- UVA120istringstream和deque的用法
- STL 之 deque的用法
- STL里deque的用法
- deque用法
- deque用法
- deque用法 和与vector的区别
- Python3:collections.deque的用法简介
- STL:deque用法详解
- stack queue deque 用法
- deque用法实例
- deque用法实例
- deque的用法及其与vector、list应用比较
- nyist1128手速(双端队列deque的用法)
- Fragment跳转
- Spring Mvc那点事---(4)Spring Mvc控制器Controller
- XML解析技术和使用Jaxp对xml文档进行dom解析
- ElasticSearch 攻略(三)概念认识
- Linux kernel模块管理相关详解
- deque的用法
- 代码训练营——TreeMap
- Android中的Matrix
- Google Cloud宣布加入NodeJS基金会
- CSDN开箱感言
- Android高级图片滚动控件,编写3D版的图片轮播器
- android NDK方式调用Jar包
- Java:String、StringBuffer和StringBuilder的区别
- Spring源码解读--init属性和预实例化(延迟加载)