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;
	};

优先级队列

相关推荐
yaoxin5211239 分钟前
279. Java Stream API - Stream 拼接的两种方式:concat() vs flatMap()
java·开发语言
@小码农11 分钟前
202512 电子学会 Scratch图形化编程等级考试三级真题(附答案)
服务器·开发语言·数据结构·数据库·算法
Cosmoshhhyyy26 分钟前
《Effective Java》解读第29条:优先考虑泛型
java·开发语言
一路往蓝-Anbo28 分钟前
C语言从句柄到对象 (六) —— 继承与 HAL:父类指针访问子类数据
c语言·开发语言·stm32·嵌入式硬件·物联网
北冥有一鲲31 分钟前
A2A协议与LangChain.js实战:构建微型软件工厂
开发语言·javascript·langchain
Chen不旧38 分钟前
java基于reentrantlock/condition/queue实现阻塞队列
java·开发语言·signal·reentrantlock·await·condition
千里马-horse41 分钟前
Rect Native bridging 源码分析--AString.h
c++·ts·rn·jsi
闻缺陷则喜何志丹43 分钟前
【二分查找】P10091 [ROIR 2022 Day 2] 分数排序|普及+
c++·算法·二分查找
laplace01231 小时前
Part 3:模型调用、记忆管理与工具调用流程(LangChain 1.0)笔记(Markdown)
开发语言·人工智能·笔记·python·langchain·prompt
风送雨1 小时前
八周Python强化计划(七)
开发语言·python