c++STL容器之deque容器
时间:2022-07-24
本文章向大家介绍c++STL容器之deque容器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
deque是双端数组。
deque和vector的区别:
- vector对于头部的插入和删除效率低,数据量越大,效率越低;
- deque相对于而言,对头部的插入和删除比vector快;
- vector访问元素时速度比deque快,这和两者的内部实现有关;
deque内部工作原理:
deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放着真实数据。中控器维护的是每个缓冲区的地址,使得使用每个deque时像一块连续的内存空间。
deque容器的迭代器是支持随机访问的。
一、deque构造函数
deque<T> deqT
deque(beg,end)
deque(n,elem)
deque(const deque &deq)
#include<iostream>
#include<deque>
using namespace std;
//加入const限制只读,并使用const_iterator
void printDeque(const deque<int>&d) {
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
cout << *it <<" ";
}
cout << endl;
}
void test() {
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i);
}
printDeque(d1);
deque<int> d2(d1.begin(),d1.end());
deque<int> d3(4,3);
deque<int> d4(d1);
}
int main() {
test();
system("pause");
return 0;
}
二、赋值操作(基本上与vector一致)
#include<iostream>
#include<deque>
using namespace std;
//加入const限制只读,并使用const_iterator
void printDeque(const deque<int>&d) {
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
cout << *it <<" ";
}
cout << endl;
}
void test() {
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i);
}
deque<int> d2;
d2 = d1;
deque<int> d3;
d3.assign(d1.begin(),d1.end());
deque<int> d4;
d4.assign(4, 3);
}
int main() {
test();
system("pause");
return 0;
}
三、deque大小操作(与vector也基本一致,但是deque中没有容量capaticy限制)
四、deque插入和删除
//两端插入
push_back(ele);
push_front(ele);
pop_back();
pop_front();
//指定位置插入、删除,pos,beg,end都是迭代器
insert(pos,ele);
insert(pos,n,ele);
insert(pos,beg,end);
clear();
erase(beg,end);
erase(pos);
五、deque数据存取(与vector一致,多了取头部的操作)
deque<int> d1 ={1,2,3,4};
访问第一个元素:
d1[0];
d1.at(0);
修改第一个元素:
d1[0] = 2;
d1.at(0) = 2;
访问首元素:
d1.front();
访问尾元素:
d1.back();
六、deque排序(利用algorithm中的sort,默认升序排序)
#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
//加入const限制只读,并使用const_iterator
void printDeque(const deque<int>&d) {
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
cout << *it <<" ";
}
cout << endl;
}
void test() {
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_front(i);
}
cout << "排序前:" << endl;
printDeque(d1);
sort(d1.begin(), d1.end());
cout << "排序后:" << endl;
printDeque(d1);
}
int main() {
test();
system("pause");
return 0;
}
- 设计模式六大原则(2):里氏替换原则
- Selenium2+python自动化72-logging日志使用
- Codeforces Round #395 (Div. 2)(A.思维,B,水)
- php实现图形计算器
- Selenium2+python自动化73-定位的坑:class属性有空格
- 华中农业大学第五届程序设计大赛网络同步赛题解
- Java构造方法与析构方法实例剖析
- 5.训练模型之利用训练的模型识别物体
- KMP算法学习(详解)
- 查找算法的实现(C/C++实现)
- HDU 1495 非常可乐(数论,BFS)
- Selenium2+python自动化74-jquery定位
- 用php实现简单的自制计算器
- Selenium2+python自动化75-Chrome配置加载
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mysql 常用查询性能优化
- 并发编程的基础
- Apache Atlas系列 -- 部署
- 深入浅出Spark的Checkpoint机制
- 基础知识 | R语言绘图保存的pdf图片无法显示中文怎么办?
- 基础知识 | R语言绘图基础之柱形图
- 高维数据 | R语言绘图基础之主成分分析
- 高维数据 |R语言数据可视化之t-SNE
- 基础知识 | R语言数据分析之控制流
- 基础知识 | R语言数据处理之日期值的转换
- 云开发 CloudBase CMS 内容管理系统正式开源啦!
- 高维数据 | R语言数据可视化之热力图
- 高维数据 | R语言数据可视化之日历图
- 打卡群刷题总结0804——二叉树的中序遍历
- 基础知识 | R语言数据管理之SQL语句