C++ STL 之stack

原创 2013年12月02日 13:28:28
stack 模板类的定义在<stack>头文件中。
stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要
的,在不指定容器类型时,默认的容器类型为deque。
定义stack 对象的示例代码如下:
stack<int> s1;
stack<string> s2;
stack 的基本操作有:
入栈,如例:s.push(x);
出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。
访问栈顶,如例:s.top()
判断栈空,如例:s.empty(),当栈空时,返回true。

访问栈中的元素个数,如例:s.size()。

stack::empty

bool empty ( ) const;

判断是否为空。

Return Value

true if the container size is 0false otherwise.

  1. // stack::empty  
  2. #include <iostream>  
  3. #include <stack>  
  4. using namespace std;  
  5.   
  6. int main ()  
  7. {  
  8.   stack<int> mystack;  
  9.   int sum (0);  
  10.   
  11.   for (int i=1;i<=10;i++) mystack.push(i);  
  12.   
  13.   while (!mystack.empty())  
  14.   {  
  15.      sum += mystack.top();  
  16.      mystack.pop();  
  17.   }  
  18.   
  19.   cout << "total: " << sum << endl;  
  20.     
  21.   return 0;  
  22. }  

Output:

total: 55

stack::pop

void pop ( );

在栈的顶部移除元素。

 

  1. // stack::push/pop  
  2. #include <iostream>  
  3. #include <stack>  
  4. using namespace std;  
  5.   
  6. int main ()  
  7. {  
  8.   stack<int> mystack;  
  9.   
  10.   for (int i=0; i<5; ++i) mystack.push(i);  
  11.   
  12.   cout << "Popping out elements...";  
  13.   while (!mystack.empty())  
  14.   {  
  15.      cout << " " << mystack.top();  
  16.      mystack.pop();  
  17.   }  
  18.   cout << endl;  
  19.   
  20.   return 0;  
  21. }  

 

Output:

Popping out elements... 4 3 2 1 0

 

stack::push

void push ( const T& x );

在栈顶添加元素

  1. // stack::push/pop  
  2. #include <iostream>  
  3. #include <stack>  
  4. using namespace std;  
  5.   
  6. int main ()  
  7. {  
  8.   stack<int> mystack;  
  9.   
  10.   for (int i=0; i<5; ++i) mystack.push(i);  
  11.   
  12.   cout << "Popping out elements...";  
  13.   while (!mystack.empty())  
  14.   {  
  15.      cout << " " << mystack.top();  
  16.      mystack.pop();  
  17.   }  
  18.   cout << endl;  
  19.   
  20.   return 0;  
  21. }  

Output:

Popping out elements... 4 3 2 1 0

stack::size

 
size_type size ( ) const;

计算栈对象元素个数

 

  1. // stack::size  
  2. #include <iostream>  
  3. #include <stack>  
  4. using namespace std;  
  5.   
  6. int main ()  
  7. {  
  8.   stack<int> myints;  
  9.   cout << "0. size: " << (int) myints.size() << endl;  
  10.   
  11.   for (int i=0; i<5; i++) myints.push(i);  
  12.   cout << "1. size: " << (int) myints.size() << endl;  
  13.   
  14.   myints.pop();  
  15.   cout << "2. size: " << (int) myints.size() << endl;  
  16.   
  17.   return 0;  
  18. }  



Output:

0. size: 0
1. size: 5
2. size: 4

stack::top

 
      value_type& top ( );
const value_type& top ( ) const;

返回栈顶元素

  1. // test_stack.cpp : 定义控制台应用程序的入口点。  
  2. //  
  3.   
  4. #include "stdafx.h"  
  5. #include <stack>  
  6. #include <vector>  
  7. #include <deque>  
  8. #include <iostream>  
  9.   
  10. using namespace std;  
  11.   
  12. int _tmain(int argc, _TCHAR* argv[])  
  13. {  
  14.     stack<int> mystack;  
  15.     mystack.push(10);  
  16.     mystack.push(20);  
  17.     mystack.top()-=5;  
  18.     cout << "mystack.top() is now " << mystack.top() << endl;  
  19.   
  20.     return 0;  
  21. }  

Output:

mystack.top() is now 15

版权声明:本文为博主原创文章,转载请注明出处 http://blog.csdn.net/buyingfei8888

c++ stl栈容器stack用法介绍

stack堆栈容器 堆栈是一个线性表,插入和删除只在表的一端进行。这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom)。堆栈的元素插入称为入栈,元素的删除称为出栈...
  • lyj2014211626
  • lyj2014211626
  • 2017年03月27日 08:49
  • 1767

c++ stl栈容器stack的pop(),push()等用法介绍及头文件

c++ stl栈stack介绍C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。c++ stl栈stack的头文件为:...
  • Xwxcy
  • Xwxcy
  • 2016年01月21日 16:46
  • 1345

c++ stl栈容器stack的pop(),push()等用法介绍及头文件

c++ stl栈stack介绍 C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。 c++ stl栈stack的头文...
  • l494926429
  • l494926429
  • 2016年07月29日 17:22
  • 9406

C++ STL 几个容器的底层实现 收藏一下

STL底层数据结构实现 C++ STL 的实现: 1.vector      底层数据结构为数组 ,支持快速随机访问 2.list            底层数据结构为双向链表,...
  • single_wolf_wolf
  • single_wolf_wolf
  • 2016年10月18日 22:46
  • 3261

STL常用容器总结——stack栈

原文 栈中的数据是先进后出(FILO),栈只有一个出口,添加和移除元素都只能在栈顶操作。在STL中,栈是以别的容器作为底部结构,修改接口使其符合栈的特性。默认情况下,栈使用deque作为其底层数据结构...
  • sinat_30071459
  • sinat_30071459
  • 2016年04月14日 09:13
  • 1623

从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)

一、类模板 类模板:将类定义中的数据类型参数化 类模板实际上是函数模板的推广,可以用相同的类模板来组建任意类型的对象集合 (一)、类模板的定义 template   class   {     //...
  • Simba888888
  • Simba888888
  • 2013年07月21日 12:49
  • 6848

STL中swap的简单使用及总结

STL中swap操作交换两个相同类型容器的内容,两个容器的元素将会将换。 需要注意的是相同的容器类型和相同的元素类型。 下边以具体实例说明: 1.相同的容器类型相同的元素类型 结果如图所示,s...
  • Ljfzhifuwa
  • Ljfzhifuwa
  • 2016年11月09日 19:45
  • 884

C++ —— 数据结构之 顺序栈,链式栈?

尝试使用C++实现简单数据结构:栈!目的:重新认知。。。 实验一:顺序栈 实验二:链栈 实验三:STL中的stack...
  • yjhdxflqm
  • yjhdxflqm
  • 2016年01月25日 12:01
  • 325

STL中stack与queue库函数 的使用方法

 1、stack stack 模板类的定义在头文件中。 stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要 的,在不指定容器类型时,默认的容器类型为de...
  • jiangchenmiao
  • jiangchenmiao
  • 2017年04月23日 17:22
  • 575

C++ STL学习之stack。

stack 介绍 栈是一种容器适配器,特别为后入先出而设计的一种(LIFO ),那种数据被插入,然后再容器末端取出 栈实现了容器适配器,这是用了一个封装了的类作为他的特定容器,提供了一组成...
  • bo_fengyu
  • bo_fengyu
  • 2015年04月07日 19:54
  • 296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ STL 之stack
举报原因:
原因补充:

(最多只允许输入30个字)