概述
文章目录
- std::stack::empty
- std::stack::size
- std::stack::top
- std::stack::push
- std::stack::emplace (C++11)
- std::stack::pop
- std::stack::swap(C++11)
LIFO堆栈
堆栈是一种容器适配器,专门设计用于在LIFO环境(后进先出)中操作,在该环境中,仅从容器的一端插入和提取元素。
堆栈被实现为容器适配器,它们是使用特定容器类的封装对象作为其基础容器的类,提供了一组特定的成员函数来访问其元素。 元素从特定容器的“后部”被推入/弹出,这被称为堆栈的顶部。
基础容器可以是任何标准容器类模板或某些其他专门设计的容器类。 容器应支持以下操作:
- empty
- size
- back
- push_back
- pop_back
标准容器类vector
,deque
和list
满足这些要求。 默认情况下,如果没有为特定的堆栈类实例指定容器类,则使用标准容器deque
。
std::stack::empty
函数原型:
bool empty() const;
测试容器是否为空
返回堆栈是否为空:即其大小是否为零。
该成员函数有效地将成员清空底层容器对象。
参数:
无
返回值:
如果基础容器的大小为0,则为true,否则为false。
std::stack::size
函数原型:
size_type size() const;
返回堆栈中的元素数。
该成员函数有效地调用基础容器对象的成员大小。
参数:
无
返回值:
基础容器中的元素数。
成员类型size_type是无符号整数类型。
std::stack::top
函数原型:
reference& top();
const_reference& top() const;
返回对栈顶元素的引用。
由于堆栈是后进先出容器,因此top元素是插入堆栈中的最后一个元素。
该成员函数有效地将成员调用回基础容器对象。
参数:
无
返回值:
对栈顶元素的引用。
std::stack::push
函数原型:
void push (const value_type& val);
void push (value_type&& val);
插入元素
在堆栈顶部的当前顶部元素上方插入一个新元素。 此新元素的内容被初始化为val的副本。
该成员函数有效地调用基础容器对象的成员函数push_back。
参数:
val:
插入的元素初始化为的值。
成员类型value_type是容器中元素的类型(定义为第一类模板参数T的别名)。
返回值:
none
std::stack::emplace (C++11)
函数原型:
template <class... Args> void emplace (Args&&... args);
构造并插入元素
在堆栈顶部的当前顶部元素上方添加一个新元素。 这个新元素通过传递args作为其构造函数的参数而就地构造。
该成员函数有效地调用基础容器的成员函数emplace_back,转发args。
参数:
args:
用于构造新元素的参数。
返回值:
none
std::stack::pop
函数原型:
void pop();
删除顶部元素
删除堆栈顶部的元素,有效地将其大小减小了一个。
删除的元素是插入堆栈中的最新元素,可以通过调用成员stack :: top检索其值。
这将调用已删除元素的析构函数。
该成员函数有效地调用基础容器对象的成员函数pop_back。
参数:
无
返回值:
无
std::stack::swap(C++11)
函数原型:
void swap (stack& x) noexcept(/*see below*/);
交换内容
用x交换容器适配器(* this)的内容。
该成员函数调用非成员函数swap(不合格)来交换基础容器。
noexcept
说明符与基础容器上的交换操作匹配。
参数:
x:
另一个相同类型的堆栈容器适配器(即,使用相同的模板参数T和Container实例化)。 大小可能会有所不同。
返回值:
none
#include <iostream>
#include <stack>
#include <string>
#include <list>
#include <assert.h>
using namespace std;
void main()
{
stack<string,list<string> > s1;
s1.push("苹果");
cout<<""苹果" 放入堆栈中. "<<endl;
s1.push("香蕉");
cout<<""香蕉" 放入堆栈中. "<<endl;
s1.push("梨子");
cout<<""梨子" 放入堆栈中. "<<endl;
s1.push("西瓜");
cout<<""西瓜" 放入堆栈中. "<<endl;
assert(s1.size()==4);
assert(s1.top()=="西瓜") ;
cout<<"将元素从栈顶弹出."<<endl;
while(s1.size())
{
cout<<" "<<s1.top()<<endl;
s1.pop();
}
}
最后
以上就是沉静洋葱为你收集整理的C++ STL标准库:std::stack堆栈的使用 入栈push() 出栈pop() 获取元素top()std::stack::emptystd::stack::sizestd::stack::topstd::stack::pushstd::stack::emplace (C++11)std::stack::popstd::stack::swap(C++11)的全部内容,希望文章能够帮你解决C++ STL标准库:std::stack堆栈的使用 入栈push() 出栈pop() 获取元素top()std::stack::emptystd::stack::sizestd::stack::topstd::stack::pushstd::stack::emplace (C++11)std::stack::popstd::stack::swap(C++11)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复