当前位置:   article > 正文

【STL】C++标准模板库——stack(堆栈)_stack库

stack库

01、目录

02、C++标准模板库——stack介绍

C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构

C++库以提供“模板”为主。所谓模板,是指不必预先制定类型的函数或类。我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来管理数据。为应对多种需求,STL为用户提供了多种名为容器(Container)的类,用于管理数据集合。在创建动态数组、表、栈、队列等数据结构时,我们只需要定义对应的容器,然后调用相应成员函数或算法即可。

03、stack成员函数表

函数(Function)描述(Description)
size()返回栈中元素数目
push()在栈顶增加元素
pop()移除栈顶元素
top()返回栈顶元素
empty()判断堆栈是否为空,堆栈为空则返回真

04、stack成员函数详解

下面的所有操作均可用于堆栈,相等指堆栈有相同的元素并有着相同的顺序。

  ==
  <=
  >=
  <
  >
  !=
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
4.1、 push()

Syntax:

//void push( const TYPE &val ); 向栈中插入元素
#include <iostream>
#include <stack> //栈容器头文件
using namespace std;

void test01()
{
	stack<int> s;
	for(int i = 0; i < 10; i++)
	{
		if(i % 2 == 0)
		{
			s.push(i); //插入偶数
		}
	}
}

int main()
{
	test01();

	system("pause");
	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
4.2、 pop()

Syntax:

// void pop();  弹出栈顶元素,弹栈或者叫出栈

#include <iostream>
#include <stack> //栈容器头文件
using namespace std;

void test01()
{
	stack<int> s;
	for(int i = 0; i < 10; i++)
	{
		if(i % 2 == 0)
		{
			s.push(i); //插入偶数,入栈
		}
	}

	s.pop(); //出栈,此时栈中只剩下:0,2,4,6
}

int main()
{
	test01();

	system("pause");
	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
4.3、 size()

Syntax:

size_type size(); //返当前堆栈中的元素数目。如:

#include <iostream>
#include <stack> //栈容器头文件
using namespace std;

void test01()
{
	stack<int> s;
	for(int i = 0; i < 10; i++)
	{
		if(i % 2 == 0)
		{
			s.push(i); //插入偶数,入栈
		}
	}
	size_t len = s.size(); //此时len为5
	
	s.pop(); //出栈,此时栈中只剩下:0,2,4,6
	
	len = s.size(); //此时len为4
}

int main()
{
	test01();

	system("pause");
	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
4.4、 top()

Syntax:

//TYPE &top(); 返回栈顶元素

#include <iostream>
#include <stack> //栈容器头文件
using namespace std;

void test01()
{
	stack<int> s;
	for(int i = 0; i < 10; i++)
	{
		if(i % 2 == 0)
		{
			s.push(i); //插入偶数,入栈
		}
	}
	
	int tmp = s.top(); //返回栈顶元素,并没有弹出栈,只是得到值
	cout << "tmp:" << tmp << endl; //返回 8
	
}

int main()
{
	test01();

	system("pause");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
4.5、 empty()

Syntax:

//bool empty(); 判断是否栈中为NULL

#include <iostream>
#include <stack> //栈容器头文件
using namespace std;

void test01()
{
	stack<int> s;
	if(s.empty()) {
		cout << "第一次:s中为NULL" << endl;
	}else {
		cout << "第一次:s中不为NULL" << endl;
	}

	for(int i = 0; i < 10; i++)
	{
		if(i % 2 == 0)
		{
			s.push(i); //插入偶数,入栈
		}
	}
	
	if(s.empty()) {
		cout << "第二次:s中为NULL" << endl;
	}else {
		cout << "第二次:s中不为NULL" << endl;
	}
	
}

int main()
{
	test01();

	system("pause");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

05、小结

关于C++标准模板库中的stack的相关知识点,大概就说这些,下节我们就开始队列。

版权声明:转载请注明出处,谢谢!

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号