1.Stack.h

#pragma once
#include<deque>
#include<vector>
#include<list>
namespace my
{
    //template<class T,class Contain = std::vector<T>>
    //template<class T, class Contain = std::list<T>>
    template<class T, class Contain = std::deque<T>>
    class stack
    {
    public:
        stack()
        {}
        void push(const T& x)
        {
            con.push_back(x);
        }
        void pop()
        {
            con.pop_back();
        }
        bool empty()
        {
            return con.empty();
        }
        size_t size()
        {
            return con.size();
        }
        T& top()
        {
            return con.back();
        }
    private:
        Contain con;


    };
}

2.Queue.h

#pragma once
#include<deque>
#include<list>
namespace my
{
    template<class T,class Contain=std::deque<T>>
    //template<class T, class Contain = std::list<T>>
    class queue
    {
    public:
        queue()
        {}
        void push(const T& x)
        {
            con.push_back(x);
        }
        void pop()
        {
            con.pop_front();
        }
        size_t size()
        {
            return con.size();
        }
        bool empty()
        {
            return con.empty();
        }
        T& front()
        {
            return con.front();
        }
        T& back()
        {
            return con.back();
        }
    private:
        Contain con;
    };
}

3.test.cpp

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<iostream>
#include"Queue.h"
#include"Stack.h"
using namespace std;
int main()
{
    my::queue<int>q;
    q.push(1);
    q.push(2);
    q.push(3);
    q.push(4);
    while (!q.empty())
    {
        cout << q.front() ;
        q.pop();
    }
    cout << endl;

    my::stack<int>s;
    s.push(1);
    s.push(2);
    s.push(3);
    s.push(4);
    while (!s.empty())
    {
        cout << s.top() ;
        s.pop();
    }
    cout << endl;
    return 0;
}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐