STL—stack

简介: stack翻译为栈,是STL中实现的一个先进后出的容器,要使用stack,需要添加头文件#include <stack>

文章目录

一、什么是stack

二、stack的操作

1.stack的定义

2.stack容器内元素的访问

3.stack中的函数

(1)push()

(2)top()

(3)pop()

(4)empty()

(5)size()


一、什么是stack

stack翻译为栈,是STL中实现的一个先进后出的容器,要使用stack,需要添加头文件#include <stack>


二、stack的操作

1.stack的定义

stack<typename> name;

其定义方法和其他的STL容器相同,typename可以是任意基本数据结构或容器

2.stack容器内元素的访问

由于栈(stack)本身就是一种后进先出的数据结构,在STL中的stack只能通过top()来访问栈顶元素

向栈中插入一个元素:s.push(x);

#include <iostream>
#include <stack>
using namespace std;
int main()
{
    stack<int> s;
    for (int i = 1; i <= 5; i ++ ) s.push(i);
    cout << s.top();
    return 0;
}

输出结果:5


3.stack中的函数

(1)push()

s.push(x);把x入栈,时间复杂度为O(1),实例见stack容器内元素的访问


(2)top()

s.top();获得栈顶元素,时间复杂度为O(1),实例见stack容器内元素的访问


(3)pop()

s.pop();用来弹出栈顶元素,时间复杂度为O(1)

#include <iostream>
#include <stack>
using namespace std;
int main()
{
    stack<int> s;
    for (int i = 1; i <= 5; i ++ ) s.push(i);
    for (int i = 1; i <= 3; i ++ ) s.pop();
    //把 5 4 3 依次弹出
    cout << s.top();
    return 0;
}

输出结果为:2

(4)empty()

s.empty();可以检测stack内是否为空,返回true为空,返回false是非空,时间复杂度为O(1)

#include <iostream>
#include <stack>
using namespace std;
int main()
{
    stack<int> s;
    if(s.empty()) cout << "EMPTY" << endl;
    else cout << "NOT EMPTY" << endl;
    for (int i = 1; i <= 5; i ++ ) s.push(i);
    if(s.empty()) cout << "EMPTY" << endl;
    else cout << "NOT EMPTY" << endl;
    return 0;
}

输出结果为:

EMPTY

NOT EMPYTY

(5)size()

s.size();返回stack内元素的个数,时间复杂度为O(1)

#include <iostream>
#include <stack>
using namespace std;
int main()
{
    stack<int> s;
    for (int i = 1; i <= 5; i ++ ) s.push(i);
    cout << s.size();
    return 0;
}

输出结果为:5



目录
相关文章
|
7月前
|
容器
STL_stack
STL_stack
33 1
|
5月前
|
设计模式 算法 Java
【c++】STL之stack和queue详解
【c++】STL之stack和queue详解
53 1
|
7月前
|
编译器 C++ 容器
【STL】stack与queue的底层原理及其实现
【STL】stack与queue的底层原理及其实现
|
存储 设计模式 C++
C++ STL stack & queue
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。
|
7月前
|
C++ 容器
【C++初阶】STL详解(六)Stack与Queue的介绍与使用
【C++初阶】STL详解(六)Stack与Queue的介绍与使用
72 1
|
7月前
|
存储 C++ 容器
STL--stack、queue实现
STL--stack、queue实现
|
7月前
|
算法 容器
C++13-STL模板-栈stack
C++13-STL模板-栈stack
|
容器
STL-stack
STL-stack
48 0
|
设计模式 C++ 容器
C++【STL】之stack和queue学习
C++ STL stack和queue常用接口和模拟实现详细讲解,干货满满!
110 0
C++【STL】之stack和queue学习
|
C++ 容器
【C++ STL】 --- stack
【C++ STL】 --- stack
69 0