盐城公司网站建设,扬州住房城乡建设局网站,企业官方网站怎么查,东莞免费自助建站模板文章目录 一、 stack 堆栈容器简介1、stack 堆栈容器引入2、stack 堆栈容器特点3、stack 堆栈容器与 deque 双端数组容器对比 二、 代码示例 - stack 堆栈容器简单示例1、代码示例2、执行结果 一、 stack 堆栈容器简介 1、stack 堆栈容器引入 C 语言中的 STL 标准模板库 中的 s… 文章目录 一、 stack 堆栈容器简介1、stack 堆栈容器引入2、stack 堆栈容器特点3、stack 堆栈容器与 deque 双端数组容器对比 二、 代码示例 - stack 堆栈容器简单示例1、代码示例2、执行结果 一、 stack 堆栈容器简介 1、stack 堆栈容器引入 C 语言中的 STL 标准模板库 中的 stack 堆栈容器 , 是一个 后进先出 ( LIFO , Last In First Out ) 的容器 , stack 容器提供了在栈顶进行插入和删除操作 ;
使用 stack 容器前 , 需要导入 stack 头文件 ;
#include stackstack 堆栈容器 是在 deque 双端数组 的基础上 , 屏蔽了部分功能 实现的 ; deque 功能比 stack 功能要强大一些 ; 2、stack 堆栈容器特点 stack 堆栈容器特点 :
后进先出 : LIFO , Last In First Out , 最后一个被插入的元素将是第一个被删除的元素 ;执行效率高 : 时间复杂度是 O(1) ;成员函数少 : 相比于 vector 动态数组 和 deque 双端数组 , stack 只提供很少的几个成员函数 ;异常安全 : stack 堆栈容器 可以保证 在出现异常时 , 数据完整 ; 3、stack 堆栈容器与 deque 双端数组容器对比 stack 堆栈容器与 deque 双端数组容器对比 :
容器特点 : stack 堆栈容器 是一种后进先出 LIFO 的数据结构 , 该容器只允许在一端进行插入和删除操作 ; push() 方法 , 用于在堆栈顶部添加元素 ,pop()方法用于从堆栈顶部删除元素 ,栈顶相当于 deque 或 vector 容器的尾部 ; deque 双端数组容器 , 又称为 双端队列 , 是一种更为灵活的数据结构 , 该容器支持在队列的头部和尾部进行插入和删除操作 ; 迭代器迭代 : stack 堆栈容器 不提供迭代器 , 也不支持 在首部 插入 / 删除 元素 ;Deque提供了迭代器并支持队列的头部和尾部添加或删除元素 , 使用起来相对更为方便 ; 主要用途 : stack 堆栈容器 的主要用途是保存按照后进先出顺序排列的元素 ; 例如保存程序的调用历史 ;子类实现 : deque 双端数组容器 有多种实现 , 如 : ArrayDeque / LinkedList ; 二、 代码示例 - stack 堆栈容器简单示例 1、代码示例 在下面的代码中 :
首先 , 创建了 stack 堆栈容器对象 , 容器中存储 int 类型对象 ; // 创建 stack 堆栈容器对象std::stackint s;然后 , 向 stack 容器加入元素 , 又称为 入栈操作 , 将元素加入到栈顶 ; // 入栈操作 s.push(1);s.push(2);s.push(3);再后 , 调用 std::stack#top() 函数 , 可以打印栈顶元素 ;
// 打印栈顶元素
std::cout 栈顶元素 : s.top() std::endl;最后 , 调用 std::stack#pop() 函数 , 将栈顶元素弹出 ;
// 出栈
s.pop();如果想要判定 stack 容器中的元素是否都弹出栈 , 可调用 std::stack#empty() 函数 进行判定 ; while (!s.empty()) {// 打印栈顶元素std::cout 栈顶元素 : s.top() std::endl;// 出栈s.pop();}代码示例 :
#include iostream
using namespace std;
#include stackint main() {// 创建 stack 堆栈容器对象std::stackint s;// 入栈操作 s.push(1);s.push(2);s.push(3);// 出栈操作 while (!s.empty()) {// 打印栈顶元素std::cout 栈顶元素 : s.top() std::endl;// 出栈s.pop();}// 控制台暂停 , 按任意键继续向后执行system(pause);return 0;
};2、执行结果 执行结果 :
栈顶元素 : 3
栈顶元素 : 2
栈顶元素 : 1
请按任意键继续. . .