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

STL之stack用法

  • 概述
  • 具体用法
    • 0. 头文件
    • 1. 声明和初始化
    • 2. 常用函数(查询)
      • 2.1 empty()
      • 2.2 size()
      • 2.3 top()
      • 2.4 输出
    • 3. 常用函数(操作)
      • 3.1 push()
      • 3.2 emplace()
      • 3.3 pop()
      • 3.4 swap()

概述

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

具体用法

0. 头文件

#include

1. 声明和初始化

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

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

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

//声明一个int类型的stack2,将stack1的元素复制给stack2
	stackstack2=stack1;
或	stack 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 nums) {
	while (!nums.empty()) {
		cout<

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);

你可能感兴趣的:(数据结构)