博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ STL容器之 stack
阅读量:5063 次
发布时间:2019-06-12

本文共 1342 字,大约阅读时间需要 4 分钟。

STL 中的 stack 是一种容器适配器,而不是一种容器。

它是容器适配器是指,只要支持一系列方法的容器(empty, size, back, push_back, pop_back),都能作为stack使用。

stack 有可能实际上是一个 vector, deque 或 list. 如果没有特殊指明,将使用 deque作为stack的实际容器。

构造函数

构造函数中包含两个模板参数。stack<stack::alue_type T, stack::container_type Container>

其中 T代表数值类型,可以是基本数据类型或用户自定义类型。

Container代表容器类型,可以是 vector, deque 或 list

1 std::stack
first; // empty stack2 std::stack
second(mydeque); // stack initialized to copy of deque3 std::stack
> third; // empty stack using vector4 std::stack
> fourth(myVector); // stack initialized to copy of vector using vector
View Code

成员函数

empty()

 测试栈是否为空,为空返回true,否则返回false。

 bool empty() const;

size()

 返回栈中元素的个数

 size_type size() const;

top()

 返回栈顶元素(最后push进来的那个)的引用。

 referenc& top();

push(val)

 压一个值到栈中,其值将被初始化为 val

 void push(const value_type& val);

pop()

 将栈顶元素弹出,注意这个函数无返回值,如果需要获取栈顶元素,应先调用top(),再pop()

 void pop();

emplace(Args..)

 emplace 功能上与 push相同。不过emplace更高效。

 emplace 的参数不是容器元素本身,而是构造容器元素所需要的参数。即如果容器元素是一个类的对象,那么Args就是这个类构造函数的参数。

 push 是先构造一个 temporary 的元素对象,再将这个对象拷贝到容器中。而emplace是直接在容器内用参数构造一个对象。省略了拷贝的时间消耗。

 emplace 本质上是调用了各容器的 emplace_back(args...)函数

swap()

 swap将两个 stack的内容交换。这两个 stack的模板参数 T和 Container必须都相同。

 void swap(stack& x) 重载1:x.swap(y)

 void swap(stack& x, stack& y)  重载2: swap(x, y)

关系运算符

 取决于实际容器的关系运算符

转载于:https://www.cnblogs.com/yutongzhu/p/5865307.html

你可能感兴趣的文章
FreeBSD方式安装 MAC OSX
查看>>
Linux 根文件系统制作
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
更改git仓库地址
查看>>
有标号DAG计数 [容斥原理 子集反演 组合数学 fft]
查看>>
Recipe 1.4. Reversing a String by Words or Characters
查看>>
Rule 1: Make Fewer HTTP Requests(Chapter 1 of High performance Web Sites)
查看>>
sql注入
查看>>
「破解」Xposed强
查看>>
src与href的区别
查看>>
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
Python 中 创建类方法为什么要加self
查看>>
关于indexOf的使用
查看>>
【转】JS生成 UUID的四种方法
查看>>