C++——数据结构stack,queue,priority_queue

栈的底层与使用

1.堆栈是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,top)进行插入数据(PUSH)和删除数据(POP)的运算。

2.特点:stack是一种容器适配器 支持后进先出 无迭代器

3.stack的底层容器需要支持如下操作:

  1. empty(判空)
  2. size(返回有效数据个数)
  3. push(队尾插入)
  4. pop (队尾删除)
  5. top(返回对头元素)

4.stack的底层可以是vector , list , deque(双端队列),默然情况是deque

底层实现:

cpp 复制代码
namespace bit
{
	template< typename T, typename Container = deque<T> >// 适配器模式 + 类模版
	class stack
	{
	public:
		void push(const T& x)
		{
			_com.push_back(x);
		}
		bool empty()
		{
			return _com.empty();
		}
		void pop()
		{
			_com.pop_back();
		}
		size_t size()
		{
			return _com.size();
		}
		T& top()
		{
			return _com.back();
		}
		
	private:
		Container _com;
	};
}

队列的底层与使用

1.队列是一种容器适配器,专门适用于先进先出操作,从一段提取元素,一端插入元素

2.队列的底层容器需要支持以下操作

  1. size
  2. empty
  3. push
  4. pop
  5. front
  6. back

3.queue的底层可以是list , deque ,默然情况是deque

底层实现:

cpp 复制代码
	template< typename T, typename Container = deque<T> >
	class queue
	{
	public:
		void push(const T& x)
		{
			_com.push_back(x);
		}
		bool empty()
		{
			return _com.empty();
		}
		void pop()
		{
			_com.pop_back();
		}
		size_t size()
		{
			return _com.size();
		}
		T& top()
		{
			return _com.back();
		}
		
	private:
		Container _com;
	};

优先级队列

相关推荐
大白的编程日记.7 分钟前
【计算机基础理论知识】C++篇(二)
开发语言·c++·学习
网小鱼的学习笔记10 分钟前
python中MongoDB操作实践:查询文档、批量插入文档、更新文档、删除文档
开发语言·python·mongodb
C语言小火车13 分钟前
野指针:C/C++内存管理的“幽灵陷阱”与系统化规避策略
c语言·c++·学习·指针
Q_Q51100828520 分钟前
python的保险业务管理与数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
亮11120 分钟前
Maven 编译过程中发生了 Java Heap Space 内存溢出(OutOfMemoryError)
java·开发语言·maven
凤年徐22 分钟前
【数据结构】时间复杂度和空间复杂度
c语言·数据结构·c++·笔记·算法
Chef_Chen24 分钟前
从0开始学习R语言--Day40--Kruskal-Wallis检验
开发语言·学习·r语言
kualcal25 分钟前
代码随想录17|二叉树的层序遍历|翻转二叉树|对称二叉树
数据结构·算法
Zhu_S W30 分钟前
深入理解Java虚拟机:Java内存区域与内存溢出异常
java·开发语言·jvm
灰海35 分钟前
原型与原型链到底是什么?
开发语言·前端·javascript·es6·原型模式·原生js