1. #include <sequence_concepts.h>
  2.  
  3. __STL_BEGIN_NAMESPACE
  4.  
  5. // Forward declarations of operators == and <, needed for friend declaration.
  6.  
  7. template <class _Tp,
  8. class _Sequence __STL_DEPENDENT_DEFAULT_TMPL(deque<_Tp>) >
  9. class stack;
  10.  
  11. template <class _Tp, class _Seq>
  12. bool operator==(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y);
  13.  
  14. template <class _Tp, class _Seq>
  15. bool operator<(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y);
  16.  
  17. template <class _Tp, class _Sequence>
  18. class stack {
  19.  
  20. // requirements:
  21.  
  22. __STL_CLASS_REQUIRES(_Tp, _Assignable);
  23. __STL_CLASS_REQUIRES(_Sequence, _BackInsertionSequence);
  24. typedef typename _Sequence::value_type _Sequence_value_type;
  25. __STL_CLASS_REQUIRES_SAME_TYPE(_Tp, _Sequence_value_type);
  26.  
  27. #ifdef __STL_MEMBER_TEMPLATES
  28. template <class _Tp1, class _Seq1>
  29. friend bool operator== (const stack<_Tp1, _Seq1>&,
  30. const stack<_Tp1, _Seq1>&);
  31. template <class _Tp1, class _Seq1>
  32. friend bool operator< (const stack<_Tp1, _Seq1>&,
  33. const stack<_Tp1, _Seq1>&);
  34. #else /* __STL_MEMBER_TEMPLATES */
  35. friend bool __STD_QUALIFIER
  36. operator== __STL_NULL_TMPL_ARGS (const stack&, const stack&);
  37. friend bool __STD_QUALIFIER
  38. operator< __STL_NULL_TMPL_ARGS (const stack&, const stack&);
  39. #endif /* __STL_MEMBER_TEMPLATES */
  40.  
  41. public:
  42. typedef typename _Sequence::value_type value_type;
  43. typedef typename _Sequence::size_type size_type;
  44. typedef _Sequence container_type;
  45.  
  46. typedef typename _Sequence::reference reference;
  47. typedef typename _Sequence::const_reference const_reference;
  48. protected:
  49. _Sequence c;
  50. public:
  51. stack() : c() {}
  52. explicit stack(const _Sequence& __s) : c(__s) {}
  53.  
  54. bool empty() const { return c.empty(); }
  55. size_type size() const { return c.size(); }
  56. reference top() { return c.back(); }
  57. const_reference top() const { return c.back(); }
  58. void push(const value_type& __x) { c.push_back(__x); }
  59. void pop() { c.pop_back(); }
  60. };
  61.  
  62. template <class _Tp, class _Seq>
  63. bool operator==(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
  64. {
  65. return __x.c == __y.c;
  66. }
  67.  
  68. template <class _Tp, class _Seq>
  69. bool operator<(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
  70. {
  71. return __x.c < __y.c;
  72. }
  73.  
  74. #ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
  75.  
  76. template <class _Tp, class _Seq>
  77. bool operator!=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
  78. {
  79. return !(__x == __y);
  80. }
  81.  
  82. template <class _Tp, class _Seq>
  83. bool operator>(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
  84. {
  85. return __y < __x;
  86. }
  87.  
  88. template <class _Tp, class _Seq>
  89. bool operator<=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
  90. {
  91. return !(__y < __x);
  92. }
  93.  
  94. template <class _Tp, class _Seq>
  95. bool operator>=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
  96. {
  97. return !(__x < __y);
  98. }
  99.  
  100. #endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
  101.  
  102. __STL_END_NAMESPACE
  103.  
  104. #endif /* __SGI_STL_INTERNAL_STACK_H */
  105.  
  106. // Local Variables:
  107. // mode:C++
  108. // End:

标准库中的-stack的更多相关文章

  1. STL笔记(6)标准库:标准库中的排序算法

    STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...

  2. 用CAS操作实现Go标准库中的Once

    Go标准库中提供了Sync.Once来实现"只执行一次"的功能.学习了一下源代码,里面用的是经典的双重检查的模式: // Once is an object that will p ...

  3. 彻底弄清c标准库中string.h里的常用函数用法

    在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...

  4. 通过atomic_flag简单自旋锁实现简单说明标准库中锁使用的memory_order

    在使用标准库中的加锁机制时,例如我们使用std::mutex,写了如下的代码(下面的代码使用condition_variable可能更合适) std::mutex g_mtx; int g_resNu ...

  5. Python 标准库中的装饰器

    题目描述 1.简单举例 Python 标准库中的装饰器 2.说说你用过的 Python 标准库中的装饰器 1. 首先,我们比较熟悉,也是比较常用的 Python 标准库提供的装饰器有:property ...

  6. (转)python标准库中socket模块详解

    python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...

  7. c/c++标准库中的文件操作总结

    1 stdio.h是c标准库中的标准输入输出库 2 在c++中调用的方法 直接调用即可,但是最好在函数名前面加上::,以示区分类的内部函数和c标准库函数. 3 c标准输入输出库的使用 3.1 核心结构 ...

  8. C标准库中atoi的一种可能的实现

    为避免与标准库中的atoi产生歧义, 我将自己编写的函数命名为strToInt, 以下是示例代码 #include <stdio.h> int strToInt(const char *s ...

  9. php标准库中的优先队列SplPriorityQueue怎么使用?(继承)

    php标准库中的优先队列SplPriorityQueue怎么使用?(继承) 一.总结 1.new对象,然后通过insert方法和extract方法来使用,top方法也很常用. 2.类的话首先想到继承, ...

随机推荐

  1. crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫

    crawler4j是用Java实现的开源网络爬虫.提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫.下面实例结合jsoup解析网页,javacsv存储采集数据:采集自如ziroom租房网(h ...

  2. java实现LIS算法,出操队形问题

    假设有序列:2,1,3,5,求一个最长上升子序列就是2,3,5或者1,3,5,长度都为3. LIS算法的思想是: 设存在序列a. ① 如果只有一个元素,那么最长上升子序列的长度为1: ② 如果有两个元 ...

  3. Flex http请求

    下面类支持POST和GET请求,请求数据和出错将返回 package com.sole.util { import flash.events.Event; import flash.events.HT ...

  4. sublime_text3配置

    推荐视频 http://v.youku.com/v_show/id_XMzU5NzQ5ODgw.html 介绍的是2版本 准备工作 点击连接下载Sublime Text3 初始化用户信息 第一次安装该 ...

  5. java高薪之路__006_多线程

    线程的创建有两种方式 package learn.JavaBasics.Class; public class ThreadDemo extends Thread { private static i ...

  6. HBase之集群状态

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.had ...

  7. mac Zip 常用命令

    最通俗的用法 zip -q -r -e -m -o [yourName].zip someThing -q 表示不显示压缩进度状态 -r 表示子目录子文件全部压缩为zip  //这部比较重要,不然的话 ...

  8. CAD打开文件总是弹出要求选择字体怎么办

    CAD打开文件总是弹出要求选择字体怎么办1.在C:\Documents and Settings\下搜索acad.fmp文件,双击用记事本打开acad.fmp文件,在最后添加内容,上面几行本来就有,不 ...

  9. (转)SQLServer实例讲解

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  10. viewer.js图片查看器插件(可缩放/旋转/切换)

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...