zoukankan      html  css  js  c++  java
  • c++ stack 适配器

           看到上一篇博客是2012.12月份的,真是岁月如梭,这也说明自己这一段时间也真是懒惰了,唉,微博玩多了,废话不多说,上菜。

           c++ 顺序存储结构 有三种:vector(数组),list(链表),deque(数组和链表一种结合,暂不清楚怎么实现的,应该是数组的变种),说说适配器的情况,适配器是在存储结构上实现的一种既定范围的操作,如队列,栈等(一般和既定的业务,目的相关)。下面就来实现一下栈的操作,上代码:

         栈的接口头文件:stack.h

        

    #ifndef stack_h
    #define stack_h
    #include <deque>
    namespace huals{
    template<typename element_type,typename container_type=std::deque<element_type> >
    class stack{
    public:
    stack(){}
    template<typename CT>
    stack(CT temp):container(temp.begin(),temp.end()){}
    bool empty();
    std::size_t size();
    void pop();
    element_type top();
    void push(element_type temp);
    private:
    container_type container;
    };
    }
    #include "stack.cpp"
    #endif

    栈的具体实现:stack.cpp

    #include <deque>
    namespace huals{
    
    template<typename element_type,typename container_type>
    bool stack<element_type,container_type>::empty(){
    return container.empty();
    }
    
    template<typename element_type,typename container_type>
    std::size_t stack<element_type,container_type>::size(){
    return container.size();
    }
    
    template<typename element_type,typename container_type>
    void stack<element_type,container_type>::pop(){
    if(!container.empty())
    container.pop_back();
    }
    
    template<typename element_type,typename container_type>
    
    element_type stack<element_type,container_type>::top(){
    element_type temp=container.back();
    return temp;
    }
    
    template<typename element_type,typename container_type>
    void stack<element_type,container_type>::push(element_type temp){
    container.push_back(temp);
    }
    
    }

    测试一下,可以通过,c++还是很强大,写这个东西的时候出了个小插曲,就是函数定义和声明,当函数有默认形参时候,默认形参只能在声明中写,定义的时候不要写,防止重复不一致。

  • 相关阅读:
    狐火加速
    [Unity3D]Unity+Android交互教程——让手机&quot;动&quot;起来
    POJ
    《Java程序设计》第14周实验作业:GUI编程初步
    我的Java开发学习之旅------&gt;Java语言中方法的參数传递机制
    使用tab自己主动补全mysql命令
    设计模式实例(Lua)笔记之三(Singleton单例模式)
    微信公众号开发加密解密异常java.security.InvalidKeyException:illegal Key Size
    GitHub 高速上手 ---- 创建、上传项目
    C/C++写得一个计时器用于检查程序的处理数据性能
  • 原文地址:https://www.cnblogs.com/huals/p/3141212.html
Copyright © 2011-2022 走看看