stack,queue的模拟实现以及优先级队列

本文详细介绍了C++中stack和queue的模拟实现,讨论了deque作为默认容器的优缺点,重点讲解了如何使用仿函数实现优先级队列的排序,包括大堆和小堆操作,以及针对指针类型的特殊处理。

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

这篇博客用来记录stack,queue的学习。

stack的模拟实现

stack的模拟实现比较简单,先上代码

#pragma once
#include<vector>
#include<list>
#include<deque>
#include<iostream>
using std::deque;
using namespace std;

namespace bit
{
   
    template<class T, class Con = deque<T>>
    class stack
    {
   
    public:
        stack();
        void push(const T& x)
        {
   
            _c.push_back(x);
        }
        void pop()
        {
   
            _c.pop_back();
        }
        T& top()
        {
   
            return _c.back(); //容器的尾在这里就是栈的栈顶
        }
        const T& top() const
        {
   
            return _c.back();
        }
        size_t size() const
        {
   
            return _c.size();
        }
        bool empty() const
        {
   
            return _c.empty();
        }
    private:
        Con _c;
    };
}

这里要提及的点是: 首先,看到模板类处传的默认参数是deque,<其实这里是容器适配器>
deque属于既包含vector的一些优点又有一些list的优点,但由于他样样通样样松导致他不被我们广泛使用,这里不对deque进行详细介绍。

queue的模拟实现

和stack的模拟实现类似,还是比较好写的,直接上代码:

#pragma once
#include<vector>
#include<list>
#include<deque>
#include<iostream>
using std::deque;
using namespace std;
namespace bit
{
   
    template<class T, class Con = deque<T>>
    class queue
    {
   
    public:
        queue();
        void push(const T& x)
        {
   
            _c.push_back(x);
        }
        void pop()
        {
   
            _c.pop_front();
        }
        T& back()
        {
   
            return _c.back();
        }
        const T& back() const
        {
   
            return _c.back();
        }
        T& front()
        {
   
            return _c.front();
        }
        const T& front
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值