zoukankan      html  css  js  c++  java
  • STL常用容器(deque&stack&queue)

    STL基本概念

    • STL(Standard Template Library,标准模板库)
    • STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)
    • 容器算法之间通过迭代器进行无缝连接。
    • STL 几乎所有的代码都采用了模板类或者模板函数

    其中容器就是常用的数据结构,迭代器是连接容器和算法的工具

    Deque容器

    基本概念

    双端数组,可以对头端进行插入删除操作

     也可以理解成为双端队列

    构造函数

    • deque<T> deqT; //默认构造形式

    • deque(beg, end); //构造函数将[beg, end)区间中的元素拷贝给本身。

    • deque(n, elem); //构造函数将n个elem拷贝给本身。

    deque赋值

    • deque& operator=(const deque &deq); //重载等号操作符

    • assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身。

    • assign(n, elem); //将n个elem拷贝赋值给本身。

    deque大小操作

    • deque.empty(); //判断容器是否为空

    • deque.size(); //返回容器中元素的个数

    • deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。

      //如果容器变短,则末尾超出容器长度的元素被删除。

    • deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。

      //如果容器变短,则末尾超出容器长度的元素被删除。

    deque插入和删除

    两端插入操作:

    • push_back(elem); //在容器尾部添加一个数据

    • push_front(elem); //在容器头部插入一个数据

    • pop_back(); //删除容器最后一个数据

    • pop_front(); //删除容器第一个数据

    指定位置操作:

    • insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。

    • insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。

    • insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。

    • clear(); //清空容器的所有数据

    • erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。

    • erase(pos); //删除pos位置的数据,返回下一个数据的位置。

    其中pos是迭代器,不能用0,1,2等索引值

    deque数据存取

    • at(int idx); //返回索引idx所指的数据

    • operator[]; //返回索引idx所指的数据

    • front(); //返回容器中第一个数据元素

    • back(); //返回容器中最后一个数据元素

    []是系统已经重载的。

    deque排序

    • sort(iterator beg, iterator end) //对beg和end区间内元素进行排序

    和vector一样。

    stack容器

    基本概念

    stack是数据结构之中的老朋友了,家喻户晓的  栈

    stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口

    栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为

    常用接口

    构造函数:

    • stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式

    • stack(const stack &stk); //拷贝构造函数

    赋值操作:

    • stack& operator=(const stack &stk); //重载等号操作符

    数据存取:

    • push(elem); //向栈顶添加元素

    • pop(); //从栈顶移除第一个元素

    • top(); //返回栈顶元素

    大小操作:

    • empty(); //判断堆栈是否为空

    • size(); //返回栈的大小

    queue容器

    基本概念

    Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口

    队列容器允许从一端新增元素,从另一端移除元素

    队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为

     常用接口

    构造函数:

    • queue<T> que; //queue采用模板类实现,queue对象的默认构造形式

    • queue(const queue &que); //拷贝构造函数

    赋值操作:

    • queue& operator=(const queue &que); //重载等号操作符

    数据存取:

    • push(elem); //往队尾添加元素

    • pop(); //从队头移除第一个元素

    • back(); //返回最后一个元素

    • front(); //返回第一个元素

    大小操作:

    • empty(); //判断堆栈是否为空

    • size(); //返回栈的大小

  • 相关阅读:
    windows 的文件夹映射实现
    项目管理工具
    SSM(Spring+SpringMVC+MyBatis)高并发优化思路
    高性能高可用高并发技术架构的一些理解
    你懂什么是分布式系统吗?Redis分布式锁都不会?
    使用批处理文件(*.bat)同时打多个cmd窗口
    mysql删除重复数据只保留一条
    native2ascii命令
    利用编辑距离(Edit Distance)计算两个字符串的相似度
    eclipse如何正确部署tomcat7
  • 原文地址:https://www.cnblogs.com/g414056667/p/13737096.html
Copyright © 2011-2022 走看看