STL | stack 和 queue

stack

介绍

先进后出的适配器

头文件

#include <stack>

template <class Type, class Container = deque <type>>
class stack

初始化

stack();

// 使用容器来构造一个栈,并保持原容器中的元素顺序
explict stack(const container_type& right);

例:

#include <iostream>
#include <vector>
#include <stack>
using namespace std;


int main() {

	vector<int> vec = { 1, 3, 5, 7 };

	stack<int, vector<int>> st(vec);
	cout << st.top() << endl;  // 输出7
   
	return 0;
}

函数

empty

删除栈顶元素

void pop();

push

压栈

void push(const Type& val);

size

返回栈的长度

size_type size() const;

swap

void swap(stack&other) noexcept;

top

返回栈顶元素的引用

reference top();
const_reference top() const;

运算符

  • operator=
  • operator<
  • operator<=
  • operator==
  • operator>
  • operator>=

queue

queue

介绍

先进先出的适配器

头文件

#include <queue>

// 默认底层容器为deque,可以指定为其他容器
template <class Type, class Container = deque<Type>>
class queue

初始化

queue();

explicit queue(const container_type& right);

函数

back

返回最后一个元素的引用

reference back();
const_reference back() const;

empty

bool empty() const;

front

返回第一个元素的引用

reference front();
const_reference front() const;

pop

void pop();

push()

将元素添加到队列尾部

void push(const Type& val);

size

size_type size() const;

swap

void swap(queue& other) noexcept;

操作符

  • operator=
  • operator<
  • operator<=
  • operator==
  • operator>
  • operator>=

priority_queue

介绍

底层数据结构为堆
对元素进行排序,以便最大的元素始终在最前面

头文件

#include <queue>

template <class Type, class Container=vector<type>, 
          class Compare=less <typename Container:: value_type>>
class priority_queue

初始化

priority_queue();

// const Traits& _comp 是一个比较函数对象
explicit priority_queue(const Traits& _comp);
...
...

例:

// 默认大根堆, 即每次取出的元素是队列中的最大值
priority_queue<int> pri_que1; 
// 大根堆, 每次取出的元素是队列中的最大值,同第一行
priority_queue<int, vector<int>, less<int> > pri_que2; 
// 小根堆, 每次取出的元素是队列中的最小值
priority_queue<int, vector<int>, greater<int> > pri_que3; 

函数

  • empty
  • pop
  • push
  • size
  • swap
  • top

运算符

同queue

posted @ 2024-05-17 17:21  深蓝von  阅读(3)  评论(0编辑  收藏  举报