总括:

  1. stackqueue不支持迭代
    stackqueue是容器适配器,由容器deque实现

一:栈Stack

(一)栈的简介

  1. stack是堆栈容器,是一种“先进后出”的容器。
  2. stack是简单地装饰deque容器而成为另外的一种容器。

(二)栈的默认构造

  1. stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT; 
  2.  
  3. stack <int> stkInt;            //一个存放int的stack容器。
  4.  
  5. stack <float> stkFloat;     //一个存放float的stack容器。
  6.  
  7. stack <string> stkString;     //一个存放string的stack容器。                         
  8.  
  9. //尖括号内还可以设置指针类型或自定义类型。

(三)栈的出栈进栈操作push和pop《重点》

  1. stack.push(elem); //往栈头添加元素
  2. stack.pop(); //从栈头移除第一个元素

补充:top()返回栈头数据(但是数据不出栈),所以top和pop联用

(四)栈的拷贝构造及赋值

  1. stack(const stack &stk); //拷贝构造函数
  2.  
  3. stack& operator=(const stack &stk); //重载等号操作符

(五)数据遍历:stack和queue不提供迭代器,所以想要获取数据,必须依次取走数据

  1. stack<int> st;
  2.  
  3. st.push();
  4. st.push();
  5. st.push(); //栈底 5 4 3 栈头
  6.  
  7. while (!st.empty())
  8. {
  9. cout << st.top() << " ";
  10. st.pop();
  11. }
  12. cout << endl;

(六)stack大小获取

  1. stack.empty(); //判断堆栈是否为空
  2. stack.size(); //返回堆栈的大小

(七)性能测试

  1. #include <stack>
  2. namespace jj06
  3. {
  4. void test_stack(long& s_size)
  5. {
  6. cout << "\ntest_stack()*******" << endl;
  7.  
  8. /******变量声明:数组初始********/
  9. char buf[];
  10.  
  11. /******变量声明:vector初始********/
  12. stack<string> stk;
  13.  
  14. /******变量声明:记录时间********/
  15. clock_t timeStart = clock(); //开始时间
  16. for (long i = ; i < s_size; i++)
  17. {
  18. try
  19. {
  20. snprintf(buf, , "%d", rand());
  21. stk.push(string(buf));
  22. }
  23. catch (exception& e)
  24. {
  25. cout << e.what() << endl;
  26. cout << "Max_size:" << i << endl;
  27. abort(); //终止
  28. }
  29. }
  30.  
  31. cout << "inti stack use milli-seconds:" << (clock() - timeStart) << endl; //获取初始化数组耗时
  32. cout << "stack.size:" << stk.size() << endl; //获取stack大小
  33. cout << "stack.top:" << stk.top() << endl; //获取stack栈顶元素
  34. stk.pop(); //出栈一个元素
  35. cout << "stack.size:" << stk.size() << endl; //获取stack大小
  36. cout << "stack.top:" << stk.top() << endl; //获取栈顶尾元素
  37. }
  38. }

二:队列Queue

(一)queue简介

  1. queue是队列容器,是一种“先进先出”的容器。
  2. queue是简单地装饰deque容器而成为另外的一种容器。

(二)queue对象的默认构造

  1. queue采用模板类实现,queue对象的默认构造形式:queue<T> queT;  如:
  2.  
  3. queue<int> queInt;            //一个存放int的queue容器。
  4.  
  5. queue<float> queFloat;     //一个存放float的queue容器。
  6.  
  7. queue<string> queString;     //一个存放string的queue容器。             
  8.  
  9. //尖括号内还可以设置指针类型或自定义类型。

(三)queue入队出队操作push和pop《重点》

  1. queue.push(elem); //往队尾添加元素
  2.  
  3. queue.pop(); //从队头移除第一个元素

(四)queue的数据获取back和front《通常和上面联用》

  1. queue.back(); //返回最后一个元素
  2. queue.front(); //返回第一个元素

(五)queue队列大小获取

  1. queue.empty(); //判断队列是否为空
  2. queue.size(); //返回队列的大小

(六)性能测试

  1. #include <queue>
  2. namespace jj07
  3. {
  4. void test_queue(long& q_size)
  5. {
  6. cout << "\ntest_queue()*******" << endl;
  7.  
  8. /******变量声明:数组初始********/
  9. char buf[];
  10.  
  11. /******变量声明:vector初始********/
  12. queue<string> que;
  13.  
  14. /******变量声明:记录时间********/
  15. clock_t timeStart = clock(); //开始时间
  16. for (long i = ; i < q_size; i++)
  17. {
  18. try
  19. {
  20. snprintf(buf, , "%d", rand());
  21. que.push(string(buf));
  22. }
  23. catch (exception& e)
  24. {
  25. cout << e.what() << endl;
  26. cout << "Max_size:" << i << endl;
  27. abort(); //终止
  28. }
  29. }
  30.  
  31. cout << "inti queue use milli-seconds:" << (clock() - timeStart) << endl; //获取初始化数组耗时
  32. cout << "queue.size:" << que.size() << endl; //获取stack大小
  33. cout << "queue.front:" << que.front() << endl; //获取stack栈顶元素
  34. cout << "queue.back:" << que.back() << endl; //获取stack栈顶元素
  35. que.pop(); //出栈一个元素
  36. cout << "queue.size:" << que.size() << endl; //获取stack大小
  37. cout << "queue.top:" << que.front() << endl; //获取栈顶尾元素
  38. cout << "queue.back:" << que.back() << endl; //获取stack栈顶元素
  39. }
  40. }

04--STL序列容器(Stack和Queue)的更多相关文章

  1. STL 序列容器

    转自时习之 STL中大家最耳熟能详的可能就是容器,容器大致可以分为两类,序列型容器(SequenceContainer)和关联型容器(AssociativeContainer)这里介绍STL中的各种序 ...

  2. [STL]deque和stack、queue

    怎么说呢,deque是一种双向开口的连续线性空间,至少逻辑上看上去是这样.然而事实上却没有那么简单,准确来说deque其实是一种分段连续空间,因此其实现以及各种操作比vector复杂的多. 一.deq ...

  3. C++ STL之栈stack和queue的使⽤

    写在最前面,本文摘录于柳神笔记: (1)栈 stack 在头⽂件 #include 中,是数据结构⾥⾯的栈-以下是常⽤⽤法: (2)队列 queue 在头⽂件 #include 中,是数据结构⾥⾯的队 ...

  4. 带你深入理解STL之Stack和Queue

    上一篇博客,带你深入理解STL之Deque容器中详细介绍了deque容器的源码实现方式.结合前面介绍的两个容器vector和list,在使用的过程中,我们确实要知道在什么情况下需要选择恰当的容器来满足 ...

  5. STL List容器

    转载http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832364.html 各个容器有很多的相似性.先学好一个,其它的就好办了.先从基础开始 ...

  6. C++ STL stack和queue

    C++ STL中独立的序列式容器只有vector,list,deque三种,stack和queue其实就是使用容器适配器对deque进行了封装,使用了新接口. 使用标准库的栈和队列时,先包含相关的头文 ...

  7. STL序列式容器学习总结

    STL序列式容器学习总结 参考资料:<STL源码剖析> 参考网址: Vector: http://www.cnblogs.com/zhonghuasong/p/5975979.html L ...

  8. STL——序列式容器

    一.容器概述与分类 1. STL容器即是将运用最广的一些数据结构实现出来.常用的数据结构有array, list, tree, stack, queue, hash table, set, map…… ...

  9. 《STL源码剖析》——第四章、序列容器

     1.容器的概观与分类 所谓序列式容器,其中的元素都可序(ordered)[比如可以使用sort进行排序],但未必有序(sorted).C++语言本身提供了一个序列式容器array,STL另外再提供v ...

随机推荐

  1. C++设计模式视频讲解

    设计模式(C++) 视频网址: http://www.qghkt.com/ 设计模式(C++)视频地址: https://ke.qq.com/course/318637?tuin=a508ea62 目 ...

  2. C#的扩展方法(this)

    先在StringLibrary类中定义一个静态方法,如下: public static class StringLibrary { //第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰 ...

  3. Python 小试牛刀,Django详细解读,让你更快的掌握它!!!

    一.MVC和MTV模式 MVC:将web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的对象(ORM),视图负责与用户的交 ...

  4. Jalor 5学习心得

    jalor5是一套功能强大的框架,该框架集成了spring.mybatis.cxf.日志.异常等组件,和其它未提及的部分组件,如消息组件. 它还自带了权限管理,内容管理,国际化等功能,该框架在项目开发 ...

  5. selenium之表格的定位

    浏览器网页常常会包含各类表格,自动化测试工程师可能会经常操作表格中的行,列以及某些特定的单元格,因此熟练掌握表格的定位方法是自动化测试实施过程中必要的技能. 被测试网页的HTML代码 <!DOC ...

  6. angularjs兼容thickbox 插件

    ThickBox是一个基于JQuery类库的扩展,它能在浏览器界面上显示非常棒的UI框, 它可以显示单图片,多图片,ajax请求内容或链接内容.ThickBox 是用超轻量级的 jQuery 库 编写 ...

  7. Clion快捷键

    快捷键配置 File->Setting->Keymap->Keymaps 选择Visual Studio风格 代码提示的匹配模式 File->Setting->Edito ...

  8. mybatis insertUseGeneratedKeys 返回主键为null

    package tk.mybatis.mapper.common.special; import org.apache.ibatis.annotations.InsertProvider; impor ...

  9. python day05

    数字类型 1.整型:整数 num = 1000000000000 type(num) --->int 2.浮点型:小数 num = 123.2341 type(num) --->float ...

  10. “百度杯”CTF比赛 十月场 Hash 复现

    进入题后老套路得到两个关键: 1.$hash=md5($sign.$key);the length of $sign is 8 2.key=123&hash=f9109d5f83921a551 ...