STL之stack学习总结(C++)

概述

  1. STL提供3种容器适配器:stack、queue、priority_queue。容器适配器不是第一类容器,因为它们不提供存放数据的实际数据结构的实现方法。而且容器适配器不支持迭代器。容器适配器的好处:程序员可以选择相应的基础数据结构。
  2. stack类可以用任何顺序容器vector、list、deque实现。默认情况下,stack用deque实现。
  3. stack的每个常见操作都实现为内联函数,调用基础容器的相应函数,这样可以避免二次函数调用的开销。
  4. 为了达到最佳性能,用deque或vector作为stack的基础容器。

具体用法

0. 头文件

#include<stack>

1. 声明和初始化

//声明stack,默认以deque容器实现
	stack<int> deque_stack;

//声明stack,以vector容器实现
	stack<int,vector<int>> vector_stack;

//声明stack,以list容器实现
	stack<int,list<int>> list_stack;

//声明一个int类型的stack2,将stack1的元素复制给stack2
	stack<int>stack2=stack1;
或	stack<int> stack2(stack1);


2. 常用函数(查询)

2.1 empty()

stack1.empty(); //返回值bool类型,若stack1为空,则返回true

2.2 size()

stack1.size(); //返回值为int类型,stack1当前存放的元素的个数

2.3 top()

条件是stack不为空

stack1.top(); //返回栈顶元素

2.4 输出

//设置一个输出函数
void display_stack(stack<int> nums) {
	while (!nums.empty()) {
		cout<<nums.top() <<" ";
		nums.pop();
	}
	cout << endl;
}

3. 常用函数(操作)

3.1 push()

//在stack1的栈顶放入元素2
	stack1.push(2)

3.2 emplace()

push()函数和emplace()都是在栈这个容器的顶部插入一个新的元素。

  • push() 实际上是调用的底层容器的push_back()函数,新元素的值是push函数参数的一个拷贝。
  • emplace() 实际上是调用的底层容器的emplace_back()函数,新元素的值是在容器内部就地构造的,不需要移动或者拷贝。
//在stack1的栈顶放入元素2
	stack1.emplace(2);

3.3 pop()

//删除stack1栈顶元素
	stack1.pop()

3.4 swap()

//将stack1和stack2交换
	stack1.swap(stack2);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值