精华内容
下载资源
问答
  • 本教程详细讲解了各种的包装种类,以及具体设计方法,是某大学教程,很有用
  • C++容器适配器

    2017-10-05 14:38:13
    一、标准库顺序容器适配器的种类  标准库提供了三种顺序容器适配器:queue(FIFO队列)、priority_queue(优先级队列)、stack(栈) 二、什么是容器适配器  ”适配器是使一种事物的行为...


    一、标准库顺序容器适配器的种类


        标准库提供了三种顺序容器适配器:queue(FIFO队列)、priority_queue(优先级队列)、stack(栈)

    二、什么是容器适配器

        ”适配器是使一种事物的行为类似于另外一种事物行为的一种机制”,适配器对容器进行包装,使其表现出另外一种行为。例如,stack<int, vector<int> >实现了栈的功能,但其内部使用顺序容器vector<int>来存储数据。(相当于是vector<int>表现出了栈的行为)。

    三、容器适配器

        要使用适配器,需要加入一下头文件:
        #include <stack>        //stack
        #include<queue>       //queue、priority_queue
    种类 默认顺序容器 可用顺序容器 说明
    stack deque vector、list、deque
    queue deque list、deque 基础容器必须提供push_front()运算
    priority_queue vector vector、deque 基础容器必须提供随机访问功能

    四、定义适配器

    1、初始化
            stack<int> stk(dep);

    2、覆盖默认容器类型
           stack<int,vector<int> > stk;

    五、容器适配器的使用


    1、下面的程序读入一系列单词存储在stack中,然后再显示输入的单词。
    [cpp] view plain copy
    1. #include <iostream>  
    2. #include <stack>  
    3. #include <string>  
    4. using namespace std;  
    5. int main()  
    6. {  
    7.     stack<string> words;  
    8.     string str;  
    9.     cout<<"Enter some words(Ctrl + Z to end):"<<endl;  
    10.     while(cin >> str)  
    11.     {  
    12.         words.push(str);  
    13.     }  
    14.     while(words.empty() == false)  
    15.     {  
    16.         cout<<words.top()<<endl;  
    17.         words.pop();  
    18.     }  
    19.     return 0;  
    20. }  


    2、使用stack处理带圆括号的表达式。遇到左括号时,将其标记下来。遇到右括号时,弹出stack中两括号之间的元素(包括括号),并压入一个"@"表示其已被替换。
    [cpp] view plain copy
    1. #include <iostream>  
    2. #include <stack>  
    3. #include <string>  
    4.   
    5. using namespace std;  
    6.   
    7. int main()  
    8. {  
    9.     stack<char> sta;  
    10.     string str;  
    11.   
    12.     cin>>str;  
    13.   
    14.     string::iterator iter = str.begin();  
    15.   
    16.     while(iter != str.end())  
    17.     {  
    18.         if(*iter != ')')  
    19.             sta.push(*iter);  
    20.         else    //*iter == ')'  
    21.         {  
    22.             while(sta.top() != '(' && !sta.empty())  
    23.             {  
    24.                 sta.pop();  
    25.             }  
    26.   
    27.             if (sta.empty())  
    28.             {  
    29.                 cout<<"No '(' matched!"<<endl;  
    30.             }  
    31.             else //*iter == '('  
    32.             {  
    33.                 sta.pop();  
    34.                 sta.push('@');  
    35.             }  
    36.         }  
    37.   
    38.         ++iter;  
    39.     }  
    40.   
    41.     while(!sta.empty())  
    42.     {  
    43.         cout<<sta.top()<<endl;  
    44.         sta.pop();  
    45.     }  
    46.   
    47.     return 0;  
    48. }  

    展开全文
  • c++ STL容器适配器

    2018-03-01 22:07:00
    一、标准库顺序容器适配器的种类 标准库提供了三种顺序容器适配器:queue(FIFO队列)、priority_queue(优先级队列)、stack(栈) 二、什么是容器适配器 ”适配器是使一种事物的行为类似于另外一种事物行为的一种...

    一、标准库顺序容器适配器的种类

        标准库提供了三种顺序容器适配器:queue(FIFO队列)、priority_queue(优先级队列)、stack(栈)
     

    二、什么是容器适配器

        ”适配器是使一种事物的行为类似于另外一种事物行为的一种机制”,适配器对容器进行包装,使其表现出另外一种行为。例如,stack<int, vector<int> >实现了栈的功能,但其内部使用顺序容器vector<int>来存储数据。(相当于是vector<int>表现出了栈的行为)。
     

    三、容器适配器

        要使用适配器,需要加入一下头文件:
        #include <stack>        //stack
        #include<queue>       //queue、priority_queue
    种类 默认顺序容器 可用顺序容器 说明
    stack deque vector、list、deque  
    queue deque list、deque 基础容器必须提供push_front()运算
    priority_queue vector vector、deque 基础容器必须提供随机访问功能
     

    四、定义适配器

    1、初始化
            stack<int> stk(dep);
     
    2、覆盖默认容器类型
           stack<int,vector<int> > stk;
     

    五、容器适配器的使用

     
    1、下面的程序读入一系列单词存储在stack中,然后再显示输入的单词。
    1. #include <iostream>  
    2. #include <stack>  
    3. #include <string>  
    4. using namespace std;  
    5. int main()  
    6. {  
    7.     stack<string> words;  
    8.     string str;  
    9.     cout<<"Enter some words(Ctrl + Z to end):"<<endl;  
    10.     while(cin >> str)  
    11.     {  
    12.         words.push(str);  
    13.     }  
    14.     while(words.empty() == false)  
    15.     {  
    16.         cout<<words.top()<<endl;  
    17.         words.pop();  
    18.     }  
    19.     return 0;  
    20. }  


    2、使用stack处理带圆括号的表达式。遇到左括号时,将其标记下来。遇到右括号时,弹出stack中两括号之间的元素(包括括号),并压入一个"@"表示其已被替换。
      1. #include <iostream>  
      2. #include <stack>  
      3. #include <string>  
      4.   
      5. using namespace std;  
      6.   
      7. int main()  
      8. {  
      9.     stack<char> sta;  
      10.     string str;  
      11.   
      12.     cin>>str;  
      13.   
      14.     string::iterator iter = str.begin();  
      15.   
      16.     while(iter != str.end())  
      17.     {  
      18.         if(*iter != ')')  
      19.             sta.push(*iter);  
      20.         else    //*iter == ')'  
      21.         {  
      22.             while(sta.top() != '(' && !sta.empty())  
      23.             {  
      24.                 sta.pop();  
      25.             }  
      26.   
      27.             if (sta.empty())  
      28.             {  
      29.                 cout<<"No '(' matched!"<<endl;  
      30.             }  
      31.             else //*iter == '('  
      32.             {  
      33.                 sta.pop();  
      34.                 sta.push('@');  
      35.             }  
      36.         }  
      37.   
      38.         ++iter;  
      39.     }  
      40.   
      41.     while(!sta.empty())  
      42.     {  
      43.         cout<<sta.top()<<endl;  
      44.         sta.pop();  
      45.     }  
      46.   
      47.     return 0;  

    转载于:https://www.cnblogs.com/bossbo/p/8490784.html

    展开全文
  • C++ STL教程(12)容器适配器总览

    千次阅读 2020-08-10 20:29:44
    什么是容器适配器 ”适配器是使一种事物的行为类似于另外一种事物行为的一种机制”,...STL容器适配器的种类 STL 提供了 3 种容器适配器,分别为 stack 栈适配器、queue 队列适配器以及 priority_queue 优先权队列适

    什么是容器适配器

    ”适配器是使一种事物的行为类似于另外一种事物行为的一种机制”,适配器对容器进行包装,使其表现出另外一种行为。例如,stack<int, vector<int> >实现了栈的功能,但其内部使用顺序容器vector来存储数据。(相当于是vector<int>表现出了栈的行为)。

    所有适配器都定义了两个构造函数:默认构造函数用于创建空对象,而带一个容器参数的构造函数将参数容器的副本作为其基础值。

    默认的stack和queue都基于deque容器实现,而priority_queue则在vector容器上实现。在创建适配器时,通过将一个顺序容器指定为适配器的第二个类型参数,可覆盖其关联的基础容器类型。例如:

    stack<int, vector<int> > int_stack; // 此时,int-stack栈是基于vector实现

    对于给定的适配器,其关联的容器必须满足一定的约束条件。stack适配器所关联的基本容器可以是任意一种顺序容器类型,因为这些容器类型都提供了push_back、pop_back和back操作;queue适配器要求其关联的基础容器必须提供pop_front操作,因此其不能建立在vector容器上;priority_queue适配器要求提供随机访问功能,因此不能建立在list容器上。

    两个相同类型的适配器可以做==, !=, <, >, <=, >=这些关系运算,只要其基本元素类型支持==和<两个操作即可。这与容器大小比较原则一致。

    STL容器适配器的种类

    STL 提供了 3 种容器适配器,分别为 stack 栈适配器、queue 队列适配器以及 priority_queue 优先权队列适配器。

    stack<T>:是一个封装了 deque 容器(可以由用户更改)的适配器类模板,默认实现的是一个后入先出(Last-In-First-Out,LIFO)的压入栈。stack 模板定义在头文件 stack 中。
    queue<T>:是一个封装了 deque (可以由用户更改)容器的适配器类模板,默认实现的是一个先入先出(First-In-First-Out,LIFO)的队列。可以为它指定一个符合确定条件的基础容器。queue 模板定义在头文件 queue 中。
    priority_queue<T>:是一个封装了 vector(可以由用户更改) 容器的适配器类模板,默认实现的是一个会对元素排序,从而保证最大元素总在队列最前面的队列。priority_queue 模板定义在头文件 queue 中。

    stack<T>栈适配器

    头文件#include <stack>
    特点:一个默认封装了 deque<T>双端队列容器的适配器类模版,实现的是一个后入先出的压入栈。

    成员函数 作用
    top() 返回一个栈顶元素的引用,类型为T& ,如果栈为空,返回值未定义
    push() 将一个对象压入栈顶
    pop() 弹出栈顶元素
    size() 返回栈的大小
    empty() 栈没有元素时返回true
    emplace() 用传入的参数调用构造函数,直接在栈顶生成对象,就地插入,节省一次复制/移动构造运算
    swap(stack & other_stack) 将当前栈中的元素与参数中的元素交换,参数所含元素的类型须与当前栈的类型一致

    queue<T>队列适配器

    头文件:#include <queue>
    特点: 一个默认封装了 deque<T>双端队列容器的适配器类模版,实现的是一个先入先出的队列。可以为他指定一个符合条件的基础容器,例如list<T>链表容器。

    成员函数 作用
    front() 返回队列中第一个元素的引用
    back() 返回队列中最后一个元素的引用
    push() 在队列尾部添加一个元素 ,通过构造函数+复制构造函数,或者构造函数+ 移动构造函数
    pop() 删除队列中第一个元素
    size() 返回队列中元素的个数
    empty() 判断队列是否为空
    emplace() 就地在队尾插入元素,通过一次构造函数,效率高
    swap(queue & other_q) 将当前队列中元素与参数中的元素交换

    priority_queue<T>优先队列适配器(堆适配器)

    头文件: #include <priority_queue>
    特点: 一个默认封装了vector<T>向量容器的适配器类模版,实现的是一个会对元素排序,确保最大元素总在最前面的队列。本质的数据结构就是一个。priority_queue默认使用元素类型的 < 操作符来确定它们之间的优先级关系,用户也可以定义自己的优先级关系。

    成员函数 作用
    top() 返回优先级队列中第一个元素的引用
    pop() 移除第一个元素
    push() 在优先级队列中插入一个元素 ,再进行排序在适当的位置,通过构造函数+复制构造函数+排序,或者构造函数+ 移动构造函数+排序
    size() 返回优先级队列元素的个数
    empty() 判断优先级队列是否为空
    emplace() 就地插入元素并排序,通过构造函数+排序,效率高
    swap(priority_queue & other) 将当前优先级队列中元素与参数中的元素交换

    其中,各适配器所使用的默认基础容器以及可供用户选择的基础容器,如表 1 所示。

    容器适配器 基础容器筛选条件 默认使用的基础容器
    stack 基础容器需包含以下成员函数:empty()size()back()push_back()pop_back()满足条件的基础容器有 vector、deque、list。 deque
    queue 基础容器需包含以下成员函数:empty()size()front()back()push_back()pop_front()满足条件的基础容器有 deque、list。 deque
    priority_queue 基础容器需包含以下成员函数:empty()size()front()push_back()pop_back()满足条件的基础容器有vector、deque。 vector

    不同场景下,由于不同的序列式容器其底层采用的数据结构不同,因此容器适配器的执行效率也不尽相同。但通常情况下,使用默认的基础容器即可。当然,我们也可以手动修改,具体的修改容器适配器基础容器的方法,后续讲解具体的容器适配器会详细介绍。

    展开全文
  • 二、PostProcessor的种类 大类分为容器级别的后置处理器以及Bean级别的后置处理器 1.BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor(容器级别的处理器) 2.BeanPostProcess

    一、作用

    1、本身也是一种需要注册到容器里的bean

    2.其里边的方法会在特定的时机被容器调用

    3.实现不改变容器或者Bean核心逻辑的情况下对Bean进行扩展

    4.对Bean进行包装,影响其行为、修改Bean的内容等

    二、PostProcessor的种类

    大类分为容器级别的后置处理器以及Bean级别的后置处理器

    1.BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor(容器级别的处理器)

    2.BeanPostProcessor(Bean级别的后置处理器,AOP思想的一种体现)

    展开全文
  • 该数据集包含有关含酒精饮料单个容器容器包装的销售名称,种类,价格,数量和销售地点信息。
  • 但是Kubernetes还有另一种类似于Linux方式:Kubernetes发行,化身和重新包装的数量和种类繁多。 [ 单击此处注册免费三个小时Kubernetes入门课程,该课程由Pluralsight和InfoWorld提供。 ] 许多最著名...
  • 数组一些了解

    2009-10-09 16:38:00
    数组于其他种类的容器之间主要三个区别在于:效率、类型和保存基本类型能力。但是随着泛型和自动包装机制出现,效率是数组仅存硕果。 java.util.Arrays有一套基于数组static方法。fills()单填充;sort()...
  • 数组一些方法

    2009-10-09 09:32:00
    数组于其他种类的容器之间主要三个区别在于:效率、类型和保存基本类型能力。但是随着泛型和自动包装机制出现,效率是数组仅存硕果。 java.util.Arrays有一套基于数组static方法。fills()单填充;sort()...
  • 认真工作片段,包装在异想天开的容器中。 向精神,但是用代替了。 该软件包提供三种类型功能: clojure.core函数,但具有更好文档(包括示例)。 clojure.core函数变体,可以接受更多种类的输入。 实用...
  • Spring框架提供了各种PostProcessor的接口,作为容器或者Bean的后置处理器,其实这些PostProcessor本省也是需要注册到容器...PostProcessor的种类 1.BeanDefinitionRegistryPostProcessor 即BeanDefinitionRegistry的.
  • Servelt和Servelt容器的关系就像枪和子弹的关系,为了解耦,通过标准化接口来相互协作,Servlet容器种类很多,如Tomcat为例。Tomact的容器等级中,Context容器是直接管理Servelt在容器中的包装类Wrapper,所以...
  • 数组可以持有基本类型 而泛型之前的容器则不能 但是有了泛型 容器就可以指定并检查它们所持有对象类型 并且有了自动包装机制 容器看起来还能够持有基本类型 下面是将数组与泛型容器进行比较示例 数组是第一级...
  • 数组 ----随笔

    2018-11-28 11:11:39
    数组与其他种类的容器之间区别有三个方面:效率、类型和保存基本类型能力。  数组和容器都可以保证你不能滥用它们。无论你是使用数组还是容器,如果越界,都会得到一个表示程序员错误Runtime Exception。 ...
  • 爱荷华州商务部要求,每一家出售瓶装酒供场外饮用商店都必须持有E级酒牌(这是...该数据集包含有关含酒精饮料单个容器容器包装的销售名称,种类,价格,数量和销售地点信息。 Iowa Liquor Sales_datasets.txt
  • 数组

    2019-04-20 09:49:56
    数组与其他种类容器之间区分有三方面:效率、类型和保存基本类型能力。 在java中,数组是一种效率最高存储和随机访问对象序列方式。数组就是一个简单线性序列,这使得元素访问非常快速。速度代价就是...
  • java基础之数组

    2014-08-28 21:18:24
    现在Java中的容器具有自动包装的功能,使得容器与数组看起来二者之间区别更小了。在java中数组就是一个简单线性序列,所以在访问数组元素师非常快速,然而这些所必须付出代价就是数组对象大小是固定,...
  • 1,数组和其他种类的的容器之间区别有三个方面:效率,类型和保存基本类型能力。   数组可以持有基本类型,而泛型之前的容器则不能。但是有了泛型,容器就可以指定并检查它们所持有对象类型,   ...
  • 容器一般有两种类, .container和.container-fluid Container 可以规定宽度 Container-fluid 默认是全屏大小 关于行列关系介绍 行是列的包装 内容必须放在列中,并且只有列才能作为行直接子代 我们可以对列...
  • 一般常见样机有logo样机、UI页面样机、折页样机、汽车样机、名片样机、海报样机、画册样机、服饰样机、电子设备样机、杯子样机、包装样机、VI样机等种类的样机素材,下面是一些使用样机制作效果图: 哪里有效...
  • 是.NET程序部署单元,用于物理包装和配置,像一个类型的容器,可以包含类别(元数据信息)、用于实现这些类型可执行代码(IL)、资源和对于其他程序集合链接。 有两种主要种类:应用程序(.exe)和库...
  • 16.4.5 容器种类 16.4.4 关联容器 16.4.5 无序关联容器(C++11) 16.5 函数对象 16.5.1 函数符概念 16.5.2 预定义函数符 16.5.3 自适应函数符和函数适配器 16.6 算法 16.6.1 算法组 16.6.2 算法通用...
  • flex 4实战

    2014-11-20 11:02:23
    17.1.2 自定义组件的种类 349 17.2 创建简单的自定义组件 352 17.2.1 构建简单的combobox 352 17.2.2 简单的spark组件 354 17.3 使用spark skin对象进行换肤 355 17.3.1 使用元数据绑定组件皮肤 356 17.3.2 自定义...
  • CruiseYoung提供带有详细书签电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Visual C++ 2010入门经典(第5版)》源代码及课后练习答案 对应书籍资料见: Visual C++ 2010...
  • 5.3 包装使用 114 实例093 将字符串转换成整数 114 实例094 整数进制转换器 115 实例095 查看数字取值范围 116 实例096 ASCII编码查看器 117 实例097 Double类型比较 118 5.4 面向对象特征 119 实例098 ...
  • 5.3 包装使用 114 实例093 将字符串转换成整数 114 实例094 整数进制转换器 115 实例095 查看数字取值范围 116 实例096 ASCII编码查看器 117 实例097 Double类型比较 118 5.4 面向对象特征 119 实例098 ...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

包装容器的种类