【STL】C++标准模板库——stack(堆栈)
01、目录文章目录01、目录02、C++标准模板库——stack介绍03、stack成员函数表04、stack成员函数详解4.1、 push()4.2、 pop()4.3、 size()4.4、 top()4.5、 empty()05、小结02、C++标准模板库——stack介绍C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)
·
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成员函数详解
下面的所有操作均可用于堆栈,相等指堆栈有相同的元素并有着相同的顺序。
==
<=
>=
<
>
!=
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;
}
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;
}
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;
}
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;
}
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;
}
05、小结
关于C++标准模板库中的stack的相关知识点,大概就说这些,下节我们就开始队列。
版权声明:转载请注明出处,谢谢!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)