【C++之容器适配器】栈和队列模拟实现

本文介绍了C++中基于deque和vector适配的栈、队列和优先级队列的实现,包括它们的基本代码结构、成员类型和函数,如empty(),size(),top(),push()和pop()等,并提供了测试函数示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

前面我们学习的都是C++标准模板库中的一些容器,今天我们要学习几个容器适配器,容器适配器的底层原理是通过适配另一个容器的功能来完成当前容器功能的实现,今天学习的栈和队列是通过deque来适配的,下面我们详细讲解stack和queue还有priority_queue的模拟实现

一、栈(stack)

1. 基本代码结构

在这里插入图片描述

2. 简介

在这里插入图片描述

3. 成员类型

在这里插入图片描述

4. 成员函数

1. 构造函数

在这里插入图片描述
栈的底层是使用deque来进行适配的,deque是一个自定义类型的成员,所以栈自身不需要实现默认构造函数,编译器生成的默认构造函数会去调用deque的默认构造函数完成初始化。

2. empty()

在这里插入图片描述

这个函数的功能是判断栈是否为空,如果为空则返回true,如果不为空,则返false。同样的道理,stack的底层是适配了一个deque,所以直接调用deque的empty()完成判断即可。

  • 代码:
		bool empty() const
		{
   
   
			return _con.empty();
		}
3. size()

在这里插入图片描述
这个函数的功能是求栈中的元素个数。同样的道理,stack的底层是适配了一个deque,所以直接调用deque的size()完成判断即可。

  • 代码:
		size_t size() const
		{
   
   
			return _com.size();
		}
4. top()

在这里插入图片描述
这个函数的功能是求栈的栈顶元素。同样的道理,stack的底层是适配了一个deque,所以直接调用deque的back()完成判断即可。

  • 代码:
		const T& top() const
		{
   
   
			return _con.back();
		}

		T& top()
		{
   
   
			return _con.back();
		}
5. push()

在这里插入图片描述
这个函数的功能是将元素入栈。同样的道理,stack的底层是适配了一个deque,所以直接调用deque的push_back()完成判断即可。

  • 代码:
		void push(const T& val)
		{
   
   
			_con.push_back(val);
		}
6.pop()

在这里插入图片描述
这个函数的功能是将元素出栈。同样的道理,stack的底层是适配了一个deque,所以直接调用deque的pop_back()完成判断即可。

  • 代码:
void pop()
		{
   
   
			_con.pop_back();
		}
7. 综合测试实现的stack的所有函数接口
  • 代码:
void test_stack()
{
   
   
	hjt::stack<int> st;
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);

	while (!st.empty())
	{
   
   
		cout << st.top() << " ";
		st.pop();
	}
	cout 
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值