deque (double-ended queue)

构造函数:

//default:
deque<T> d; //空的vector //fill:
deque<T> d(n); //n个元素的deque,元素默认初始化
deque<T> d(n, value); //n个元素值为value的deque //range:
deque<T> d(first, last); //两个迭代器之间的元素构成的deque
deque<T> d(arr, arr + sizeof(arr) / sizeof(T)); //由内置数组构造的deque //copy:
deque<T> d(const deque<T> &t); //d是t的拷贝 //move:
dequer<T> d(deque<T> &&x); //x是右值引用(只能引用右值,如deque<int> &&x = {1,2,3};) //initializer list:
deque<T> d{value1, value2...};

赋值与swap:

d1 = d2;
d1 = {value1, value2...};
d1.swap(d2);
swap(d1, d2);

大小:

size_type d.size() const noexcept;    //元素数目
size_type d.max_size() const noexcept; //可容纳元素的最大数目
bool d.empty() //是否为空
d.resize(n); //调整元素数目,使容器中含n个元素
d.resize(n, value); //调整后的deque中每个元素的值都为value
d.shrink_to_fit(); //请求退还多余内存,但标准库不保证完全退还(C++11)

获取元素:

d[i] = value;
d.at(i) = value;
d.front() = value; //第一个元素
d.back() = value; //最后一个元素

修改:

//assign
d.assign(n, value); //将v置为n个值为value的元素
d.assign(first, last); //用t的两个迭代器之间的值为v赋值,左闭右开 t可以是vector、array、list、forward_list、deque、set、unordered_set、multiset、unordered_multiset等。元素的顺序和重复性由传入的容器类型性质决定
d.assign(begin(t), end(t)); //与上条语句类似,除上述类型,还支持内置数组类型
d.assign(arr, arr + n); //将数组中的一部分赋给d
d.assign({value1, value2...}); //列表 d.push_back(value); //尾部插入一个元素
d.push_front(value); //头部插入一个元素
d.pop_back(); //删除最后一个元素
d.pop_front(); //删除第一个元素 //insert
d.insert(it, value); //迭代器指向的位置插入值为value的元素
d.insert(it, n, value); //迭代器指向的位置插入n个值为value的元素
d.insert(it, first, last); //迭代器it指向的位置插入另一个容器的两个迭代器之间的元素
d.insert(it, x); //x是T的右值引用 T&&
d.insert(it, {value1, value2...}); //列表
//以上函数返回一个指向新插入的第一个元素的迭代器 //emplace(C++11)
d.emplace(it, args); //以args为参数,调用T的构造函数构造一个对象插入it所指的位置
d.emplace_back(args); //将构造的T对象插入尾部
d.emplace_front(args); //将构造的T对象插入头部
//以上函数返回一个指向新插入的元素的迭代器 //erase
v.erase(it); //删除it指向的元素
v.erase(first, last); //删除范围内的元素 v.clear(); //删除所有元素

获取迭代器:

d.begin(), d.end();    //首元素位置,尾后位置
d.cbegin(), d.cend(); //const_iterator //reverse_iterator 按逆序寻址
//const_reverse_iterator
d.rbegin(), d.rend();
d.crbegin(), d.crend(); begin(d), end(d);

【STL基础】deque的更多相关文章

  1. 带你深入理解STL之Deque容器

    在介绍STL的deque的容器之前,我们先来总结一下vector和list的优缺点.vector在内存中是分配一段连续的内存空间进行存储,其迭代器采用原生指针即可,因此其支持随机访问和存储,支持下标操 ...

  2. STL基础4:deque

    #include <iostream> #include <queue> #include <string> using namespace std; #defin ...

  3. c++中级 STL基础学习(二)

    deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插 ...

  4. STL之deque双向队列

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,提供随机访问,deque在接口上和vector非常相似,下面列出deque的常用成员函数: Table 6.9. C ...

  5. STL之deque(双向队列)

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque在vector函数的基础上增 ...

  6. STL中deque

    以下学习一下STL中另一种序列容器——deque. deque表示double-ended queue,即双向队列,deque是通过作为动态数组的方式实现的,这样可以在两端插入元素.因此,deque可 ...

  7. STL基础知识

    一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内, ...

  8. STL基础复习

    stl容器:vector,deque,list,map/multimap,set 特殊容器:stack,queue,priority_queue 通用操作 size()  返回当前容器元素数量 emp ...

  9. STL之Deque容器

    1.Deque容器 1)deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. 2)deque在接口上和vect ...

随机推荐

  1. vue开发后台管理系统小结

    最近工作需要用vue开发了后台管理系统,由于是第一次开发后台管理系统,中间也遇到了一些坑,想在这里做个总结,也算是对于自己工作的一个肯定.我们金融性质的网站所以就不将代码贴出来哈 一.项目概述 首先工 ...

  2. DAY9-python并发之多线程理论

    一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合 ...

  3. createPlaceholder 函数

    function createPlaceholder(id,text,top,left){ top = top || 0; left = left || 0; var obj = $('#' + id ...

  4. solr search基础知识(控制符及其参数)

    1.^ 控制符 (1)查询串上用^ 搜索: 天后王菲,如果希望将王菲的相关度加大,用^控制符. 天后  王菲^10.5  结果就会将含有王菲的document权重加大分数提高,排序靠前,10.5为权重 ...

  5. memcache windows64 位安装

    --环境: windows 2008 R2 64位 wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-x64 --目标: 实现 php 用memcach ...

  6. String/StringBuilder 类 用对象数组实现登录注册功能

    一.需求说明:实现用户注册.登陆功能: 程序中使用一个长度为3的对象数组,存储用户的登录名和密码: 例如如下格式: 登录名    密码      生日           爱好 zhangsan 11 ...

  7. 适合新手的Python爬虫小程序

    介绍:此程序是使用python做的一个爬虫小程序  爬取了python百度百科中的部分内容,因为这个demo是根据网站中的静态结构爬取的,所以如果百度百科词条的html结构发生变化 需要修改部分内容. ...

  8. Xcode 运行时找不到xib资源文件

    调试运行时候,提示找不到xib(或者其他)资源文件,在工程中确实看的到该资源文件,到具体运行的资源目录([[NSBundlemainBundle] resourcePath]),没有看到该文件,而其他 ...

  9. CH 4302 Interval GCD

    辗转相减法的扩展 $gcd(x, y, z) = gcd(x, y - x, z - y)$ 当有n个数时也成立 所以构造$a_{i}$的差分数组$b_{i} = a_{i} - a_{i - 1}$ ...

  10. javascript 基础练习 做Bingo图

    ---恢复内容开始--- <!DOCTYPE html><html>    <head>        <meta charset="utf-8&q ...