STL之stack(栈)详解

一、基本概念

这种数据结构使用LIFO技术,其中LIFO表示后进先出。首先插入的元素将在末尾提取,以此类推。有一个名为“top”的元素,它是位于最上面位置的元素。所有插入和删除操作都是在堆栈的顶部元素本身进行的。
语法:

template<class T, class Container = deque<T> > class stack;

模板参数
T:参数指定容器适配器将保留的元素的类型。
Container:参数指定容器的内部对象,用于容纳堆栈的元素。

成员类型
value_type:指定了元素类型。
container_type:指定了基础容器类型。
size_type:它指定元素的大小范围。

二、常用函数

2.1、push函数

该函数用于在堆栈顶部插入新元素。
void push (const value_type& value)

stack<int> a;//a为空
a.push(1);//a中元素:1

2.2、pop函数

该函数用于删除元素,堆栈中的元素从顶部删除。
void pop()

stack<int> a;//a为空
a.push(1);//a中元素:1
a.push(2);//a中元素:2,1
a.pop();//a中元素:1

2.3、top函数

该函数用于访问堆栈的顶部元素。该元素起着非常重要的作用,因为所有插入和删除操作都是在顶部元素上执行的。
value_type& top();
const value_type& top() const;

stack<int> a;//a为空
a.push(1);//a中元素:1
a.push(2);//a中元素:2,1
int b = a.top();//b为2,a中元素不改变

2.4、size函数

该函数返回堆栈容器的大小,该大小是堆栈中存储的元素数量的度量。
size_type size() const

stack<int> a;//a为空
a.push(1);//a中元素:1
a.push(2);//a中元素:2,1
int b = a.size();//b为2

2.5、empty函数

该函数用于测试堆栈是否为空。如果堆栈为空,则该函数返回true,否则返回false。
bool empty() const;

stack<int> a;//a为空
bool b = a.empty();//返回true
a.push(1);//a中元素:1
b = a.empty();//返回false

2.6、emplace函数

该函数用于在当前顶部元素上方的堆栈中插入新元素。。
template <class… Args> void emplace (Args&&… args);
args:参数转发用于构造新元素的参数。也就是说,由args指定的元素将插入到当前顶部元素上方的堆栈中。现在,新插入的元素成为顶部元素,并且所有推入和弹出操作都在其上执行。
与push的区别:
push的元素必须是已经构造好的对象,而emplace可以直接传入构造对象需要的元素,然后自己调用其构造函数!

stack<int> a;//a为空
a.emplace(1);//a中元素:1
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值