• (C/C++学习)25. STL之deque容器


    说明:vector 容器是单向开口的连续内存空间,deque 则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector 容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。

    注意:deque 容器的迭代器并不是普通的指针,其复杂度和 vector 不是一个量级,这影响各个运算的层面。因此,除非有必要,我们应该尽可能的使用 vector,而不是 deque。

    1.构造函数

    1 deque<T> deq; //默认构造形式
    2 deque(beg,end); //构造函数将[beg, end)区间中的元素拷贝给本身
    3 deque(n,elem); //构造函数将 n 个 elem 拷贝给本身
    4 deque(const deque &deq); //拷贝构造函数

    2.赋值操作

    1 assign(beg,end); //将[beg, end)区间中的数据拷贝赋值给本身
    2 assign(n,elem); //将 n 个 elem 拷贝赋值给本身
    3 deque& operator=(const deque &deq); //重载等号操作符
    4 swap(deq); //将 deq 与本身的元素互换

    3.大小操作

    1 deque.size(); //返回容器中元素的个数
    2 deque.empty(); //判断容器是否为空
    3 deque.resize(num);
    4 //重新指定容器的长度为 num,若容器变长,则以默认值填充新位置;如果容器变短,则末尾超出容器长度的元素被删除。
    5 deque.resize(num, elem); 
    6 //重新指定容器的长度为 num,若容器变长,则以 elem 值填充新位置,如果容器变短,则末尾超出容器长度的元素被删除。

    4.双端插入和删除操作

    1 push_back(elem); //在容器尾部添加一个数据
    2 push_front(elem); //在容器头部插入一个数据
    3 pop_back(); //删除容器最后一个数据
    4 pop_front(); //删除容器第一个数据

    5.存取数据

    1 at(idx);//返回索引 idx 所指的数据,如果 idx 越界,抛出 out_of_range
    2 operator[];//返回索引 idx 所指的数据,如果 idx 越界,不抛出异常,直接出错
    3 front();//返回第一个数据
    4 back();//返回最后一个数据

    6.插入操作

    1 insert(pos,elem);//在 pos 位置插入一个 elem 元素的拷贝,返回新数据的位置
    2 insert(pos,n,elem);//在 pos 位置插入 n 个 elem 数据,无返回值
    3 insert(pos,beg,end);//在 pos 位置插入[beg,end)区间的数据,无返回值

    7.删除操作

    1 clear(); //移除容器的所有数据
    2 erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置
    3 erase(pos); //删除 pos 位置的数据,返回下一个数据的位置
  • 相关阅读:
    dblink
    linux 查进程、杀进程、起进程
    oracle 资源统计SQL语句
    DIV+CSS+javascript 手动轮播图
    接受同步数据接口
    java String StringBuffer StringBuilder
    SpringMVC Servlet 分页查询接收参数
    WPF 开发
    收集整理的各地精品青年旅舍大全(
    Linux平台Java调用so库JNI使用例子
  • 原文地址:https://www.cnblogs.com/tuihou/p/12409495.html
Copyright © 2020-2023  润新知