C++ std::deque 基本用法
#include <iostream>
#include <string>
#include <deque> // https://zh.cppreference.com/w/cpp/container/deque // vector 和 deque 的差别
// https://www.cnblogs.com/zhuyf87/archive/2012/12/09/2809896.html using namespace std; int main()
{
int a[] = { 1,2,3 };
deque<int> deq = {1,2,3}; ////////////////////////////////////////////////////////////////////////// deq.assign(4, 5); // 5 5 5 5 deque<int> deq1 = deq; // deep copy
deq1[0] = 10;
deq1.at(0) = 25;
int vhead = deq1.front();
int vtail = deq1.back(); //////////////////////////////////////////////////////////////////////////
// 迭代器 for (auto it = deq1.begin(); it != deq1.end(); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl; // 25 2 3 for (auto it = deq1.cbegin(); it != deq1.cend(); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl; // 25 2 3 for (auto it = deq1.rbegin(); it != deq1.rend(); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl; // 3 2 25 ////////////////////////////////////////////////////////////////////////// bool isEmpty = deq1.empty();
size_t size = deq1.size();
size_t mSzie = deq1.max_size(); deq1.clear();
deq1.shrink_to_fit(); deq1.insert(deq1.begin(), 6);
deq1.emplace(deq1.begin(), 7); deq1.insert(deq1.begin(), 2, 55); deque<int> deqtt = {11,22,33};
deq1.insert(deq1.begin(), deqtt.begin(), deqtt.end()); // 11 22 33 55 55 7 6 deq1.insert(deq1.begin(), {999, 888}); // 999 888 11 22 33 55 55 7 6 deq1.push_back(88);
deq1.emplace_back(99); deq1.push_front(100);
deq1.emplace_front(110); deq1.erase(deq1.begin());
deq1.erase(deq1.begin(), deq1.end()); deq1.swap(deqtt); // 交换的 size 大小不必一样 //////////////////////////////////////////////////////////////////////////
// resize 以及初始化值什么时候起作用 deq1.clear();
deq1.resize(2); // 0 0
deq1.resize(2, 4); // 0 0 其中的 4 还不起作用。 deq1.clear();
deq1.resize(2, 4); // 4 4
deq1.resize(2); // 4 4 没有改变 size,见下面的说明 deq1.clear();
deq1.resize(2); // 0 0
deq1.resize(3, 4); // 0 0 4 当 size 要改变时,4 时新值的初始值!原来的空间时不会删除的,也不改变。 deq1.clear();
deq1.resize(2, 4); // 4 4
deq1.resize(3); // 4 4 0 默认的 int 初始值为 0 return 0;
}
C++ std::deque 基本用法的更多相关文章
- C++ std::deque
std::deque template < class T, class Alloc = allocator > class deque; Double ended queue deque ...
- C++ std::stack 基本用法
#include <iostream> #include <string> #include <stack> // https://zh.cppreference. ...
- HDU5127 神坑题---vector 、 list 、 deque 的用法区别
题意:三个操作 1 a b : 队列中加入(x = a, y = b); -1 a b : 队列中减去(x = a, y = b); 0 p q :从队列的数对中查询哪一对x,y能够让 p * ...
- C++ std::map::erase用法及其陷阱
1.引入: STL的map中有一个erase方法用来从一个map中删除制定的节点 eg: map<string,string> mapTest; typedef map<string ...
- 【STL】-deque的用法
初始化: #include <deque> deque<float> fdeque; 算法: fdeque.push_front(f); fdeque.push_back(f) ...
- C++ std::pair的用法
1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当一个函数需要返回2个数据的时候, ...
- std::shared_ptr 和 std::weak_ptr的用法以及引用计数的循环引用问题
在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已.std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移 ...
- std::deque
deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素.但它又与vector不同,deque支持高效插入和删除容器的头部元素 ...
- boost::interprocess::managed_shared_memory(2)(std::deque)
struct shareDataEx : shareData { int index; int total_size; }; typedef managed_shared_memory::segmen ...
随机推荐
- 附012.Kubeadm部署高可用Kubernetes
一 kubeadm介绍 1.1 概述 参考<附003.Kubeadm部署Kubernetes>. 1.2 kubeadm功能 参考<附003.Kubeadm部署Kubernetes& ...
- 【Android - 进阶】之RemoteViews简介
RemoteViews,顾名思义,就是远程的View,也就是可以运行在其他进程中的View.RemoteViews常用在通知和桌面小组件中. 一.RemoteViews应用到通知 首先来介绍一下系统自 ...
- Java基础部分(11~20)
11."=="和 equals 方法究竟有什么区别? (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) ==操作符专门用来比较两 ...
- java8 按两个属性分组,并返回扁平List; stream排序
--------------- java8 按两个属性分组,并返回扁平List /** * 设置大区小区分组排序 * @param dtoList */ private List<Perform ...
- DBCP2的使用例子和源码详解(不包括JNDI和JTA支持的使用)
目录 简介 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写jdbc.prperties 获取连接池和获取连接 编写测试类 配置文件详解 数据库连接参数 连接池数据基本参数 连接检查参数 ...
- 对于Python函数与方法,你可能存在些误解
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- CentOS 6 编译 TensorFlow for Java 以及 Maven Pom
我们的系统环境 CentOS 6.5, JDK 1.8 更新yum源 $ yum update 安装 Python 2.7 $ yum install python27 python27-numpy ...
- Node.js 中 process.cwd()与__dirname的区别
process.cwd() 是当前执行node命令时候的文件夹地址 --工作目录,保证了文件在不同的目录下执行时,路径始终不变 __dirname 是被执行的js 文件的地址 --文件所在目录 当前模 ...
- 移动开发在路上-- IOS移动开发系列 网络交互四(2)
接着上次的讲,这次我们讲 网络请求的封装 打开创建的项目,让我们一起来继续完成他, 首先我们来创建一个NSobject 的文件 圈住出来的轻一点要注意.千万不要搞错了 创建好之后,开始编写代码, 我 ...
- Pyhton表白代码——浪漫圣诞节
圣诞节即将到了,所以这回通过turtle模块来编写一个表白的小程序 开发时间:2019-12-15 开发工具:Sublime 开发模块:turtle 这里用到了turtle库的相关知识,如果不熟悉可以 ...