zoukankan      html  css  js  c++  java
  • 【STL基础】deque

    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);
  • 相关阅读:
    使用RAID与LVM磁盘阵列技术。
    CentOS7使用firewalld打开关闭防火墙与端口
    centos7 firewalled
    CentOS 7 firewalld vsftpd开放端口
    ftp的主动模式active mode和被动模式 passive mode的配置和区别
    ftp 长传报错553 可能是选的目录不对
    web控制树莓派摄像头
    TensorFlow.js入门:一维向量的学习
    Getting Started with TensorFlow.js
    搭建PHP开发环境(XAMPP+PhpStorm)
  • 原文地址:https://www.cnblogs.com/dengeven/p/3737809.html
Copyright © 2011-2022 走看看