zoukankan      html  css  js  c++  java
  • 容器适配器(adapter)

    定义适配器

    每个适配器都定义有两个构造函数:

    1.默认构造函数,创建一个空对象;deque<int> deq; 

    2.接收一个容器的构函拷贝该容器来初始化适配器;stack<int> stk(deq);   //将deq的元素拷贝给stack进行初始化,stack的默认基础容器可以是deque

    基础容器:每个适配器的基础容器是有限制的,限制依据是适配器容器所需要的操作p355

    创建适配器时,可指定一个顺序容器作为第二参数(第一参数是该容器的元素类型)覆盖默认的基础容器: stack<string, vector<string> > str_stk;

    所有适配器的通用类型和操作

    操作解释
    size_type 一种类型,须以保存当前类型的最大对象的大小
    value_type 元素类型
    container_type 实现适配器的底层容器类型
    A a; 创建一个名为a的空适配器
    A a(c) 创建一个名为a的适配器,带有容器c的一个拷贝
    关系运算符 每个适配器都支持所有关系运算符:==!=<、 <=>>=这些运算符返回底层容器的比较结果
    a.empty() a包含任何元素,返回false;否则返回true
    a.size() 返回a中的元素数目
    swap(a, b) 交换ab的内容,ab必须有相同类型,包括底层容器类型也必须相同
    a.swap(b) 同上

    stack

    操作解释
    s.pop() 删除栈顶元素,不返回。
    s.push(item) 创建一个新元素,压入栈顶,该元素通过拷贝或移动item而来
    s.emplace(args) 同上,但元素由args来构造。
    s.top() 返回栈顶元素,不删除。
    • 定义在<stack>头文件中。
    • stack默认基于deque实现,也可以在listvector之上实现。

    queue和priority_queue

    操作解释
    q.pop() 删除队首元素,但不返回。
    q.front() 返回队首元素的值,不删除。
    q.back() 返回队尾元素的值,不删除。只适用于queue
    q.top() 返回具有最高优先级的元素值,不删除。
    q.push(item) 在队尾压入一个新元素。
    q.emplace(args)  
    • 都定义在<queue>头文件中。
    • priority_queue允许我们为队列中的元素建立优先级,新加入的元素会排在所有优先级比它低的已有元素之前。(相对优先级由元素类型的<运算符重载确定)
    • queue默认基于deque实现,priority_queue默认基于vector实现。
    • queue可以在listvector之上实现,priority_queue也可以用deque实现。
  • 相关阅读:
    纯CSS制作二级导航
    用python写MapReduce函数——以WordCount为例
    hadoop安装配置——伪分布模式
    字符串中最长不重合子串长度
    从30岁到35岁:为你的生命多积累一些厚度
    Hbase快速开始——shell操作
    5句话
    []leetcode]Unique Paths II
    [leetcode]Gray Code
    linux 命令案例学习——文件搜索
  • 原文地址:https://www.cnblogs.com/Real-Ying/p/12495669.html
Copyright © 2011-2022 走看看