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 ...
随机推荐
- Gitlab用户信息批量导出
前言 因运维体系中涉及到用户权限管理及统计,需将Gitlab用户数据提取出来并录入到公司内部自建的权限统计平台. 本文将对Gitlab的用户信息数据批量导出进行操作说明! 思路 A)要对数据进行批量的 ...
- docker概念
一.docket概述 什么是docker? 为什么docker会出现 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不 ...
- css圆,背景,img填满等样式
background 属性 属性值 描述 background-color 单词颜色表示法.rgb.十六进制 设置元素的背景颜色 background-image url('http://www.aa ...
- 暗灰色的圆形按钮.html
宝宝 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title& ...
- 【直播分享】实现LOL小地图英雄头像分析案例【华为云分享】
直播介绍: 当今时代是人工智能高速发展的时代,深度学习已经渗透入经济.工业.军事.娱乐等各各领域的角落.近年来AlphaGo击败李世石更是使得人工智能技术家喻户晓.人工智能在游戏领域的开发依然不断进步 ...
- 配置基于接口地址池的DHCP
配置基于接口地址池的DHCP 原理概述 DHCP(动态主机配置协议),采用C/S方式工作,C向S动态请求配置信息,S自动分配配置信息. 基于接口地址池的DHCP服务器,链接这个接口网段的用户都可以从该 ...
- oracle实例状态
oracle数据库实例启动过程分三个步骤,分别是启动实例,加载数据库,打开数据. 1.NOMOUNT模式:这种模式只会创建实例,不会打开任何的数据文件,用户要以sysdba的身份登录,才具有关闭和启动 ...
- react-native修改xcode项目名
目录 1. 选中旧工程名,改为新的工程名 2. 依次选择黄色文件夹,修改名字,千万不要在Xcode外修改!!! 3. 点击Find,点击Find and Replace in Project... 4 ...
- Linux IO多路复用之epoll网络编程
前言 本章节是用基本的Linux基本函数加上epoll调用编写一个完整的服务器和客户端例子,可在Linux上运行,客户端和服务端的功能如下: 客户端从标准输入读入一行,发送到服务端 服务端从网络读取一 ...
- 理解web服务器和数据库的负载均衡以及反向代理
这里的“负载均衡”是指在网站建设中应该考虑的“负载均衡”.假设我们要搭建一个网站:aaa.me,我们使用的web服务器每秒能处理100条请求,而aaa.me这个网站最火的时候也只是每秒99条请求,那么 ...