当前位置: 首页 > news >正文

【STL】C++ stack(栈) 基本使用

目录

一 stack常见构造

1 空容器构造函数(默认构造函数)

2. 使用指定容器构造

3 拷贝构造函数

二 其他操作

1 empty

2 size

3 top

4 push && pop

5 emplace

6 swap

三 总结


一 stack常见构造

1 空容器构造函数(默认构造函数)

构造一个没有元素的空容器。

2. 使用指定容器构造

可以使用指定的底层容器来构造栈,默认是 std::deque,但也可以是 std::vectorstd::list

3 拷贝构造函数

构造一个容器,其中包含 x 中每个元素的副本,顺序相同

#include<stack>
#include<vector>
#include<iostream>
using namespace std;int main()
{stack<int> st1;vector<int> v{ 1, 2, 3, 4 };stack<int, vector<int>> st2(v);cout << " st2: " << st2.size() << endl;stack<int, vector<int>> st3(st2);cout << " st3: " << st3.size() << endl;stack<int> st4(st1);cout << " st4: " << st4.size() << endl;return 0;}

二 其他操作

1 empty

 返回容器是否为空(即其大小是否为 0)

void Test1()
{stack<int> st;if (st.empty()) cout << " st is empty" << endl;else cout << "st is not empty" << endl;
}

2 size

上面已经演示过了, 这里不说明了

3 top

返回栈顶元素

void Test2()
{vector<int> v{ 1, 2, 3, 4 };stack<int, vector<int>> st(v);cout << st.top() << endl;
}

4 push && pop

void push (const value_type& val);
void push (value_type&& val);
void pop();
void Test3()
{stack<int> st;st.push(1);st.push(2);st.push(3);while (!st.empty()){cout << st.top() << endl;st.pop();}}

5 emplace

 emplace 作用和 push 一样的, 只是效率不一样, 涉及到了右值引用问题, 后面再讲

void Test4()
{stack<string> st;st.emplace("first");st.emplace("second");while (!st.empty()){cout << st.top() << endl;st.pop();}
}

6 swap

交换两个容器的内容

void swap (stack& x)
void Test5()
{stack<int> st1, st2;st1.push(1);st1.push(2);cout << st1.size() << endl;st2.push(10);st2.push(20);st2.push(30);cout << st2.size() << endl;st1.swap(st2);cout << st1.size() << endl;cout << st2.size() << endl;
}

三 总结

这节栈的使用非常简单的, 感觉没有啥要讲的, 重要的是后面 栈的模拟实现还有和 队列联合使用. 对本节概念不清楚的, 可以看看我之前写的栈数据结构. 那里就很清晰了.

这两天成都一直下雨, 冷. 脑壳还有点晕, 最近学习Linux系统, 学到线程了, 早听说线程难, 没想到这么难.继续加油吧!

http://www.lryc.cn/news/358347.html

相关文章:

  • 轻量级 K8S 环境 安装minikube
  • 市场巨变,移动开发行业即将迎来“第二春”?
  • DependencyCheck工具使用
  • oracle翻页查询的小坑记录
  • 学习笔记——动态路由协议——OSPF(OSPF基本术语)
  • 子集和问题(回溯法)
  • 【NumPy】全面解析arange函数:高效创建数值范围数组
  • [ C++ ] 深入理解模板( 初 阶 )
  • UI自动化测试最佳设计模式POM
  • 朋友圈定时发送设置
  • Spark SQL 中DataFrame DSL的使用
  • qt 布局学习笔记
  • 设计模式复习
  • 前后端开发入门全攻略:零基础学起
  • Android Studio无法改变Button背景颜色解决办法
  • 元宇宙三维互动展厅让体验者进入一个充满奇幻与创意的数字世界
  • java高级——Collection集合之List探索(包含ArrayList、LinkedList、Vector底层实现及区别,非常详细哦)
  • JAVA-->方法的使用详解
  • 基于 vLLM 搭建 DeepSeek-V2 Chat 服务
  • Kafka 安装教程和基本操作
  • Java 五种内部类演示及底层原理详解
  • 【UnityShader入门精要学习笔记】第十五章 使用噪声
  • C++ ─── string的完整模拟实现
  • 安卓中的图片压缩
  • centOS7.9 DNS配置
  • 设计模式20——职责链模式
  • android13 差分包制作命令
  • Flink-cdc更好的流式数据集成工具
  • C++|设计模式(三)|抽象工厂模式
  • AVB协议分析(一) FQTSS协议介绍