⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xstack.h

📁 BCB的学习资料
💻 H
字号:
//---------------------------------------------------------------------------

#ifndef XStackH
#define XStackH
//---------------------------------------------------------------------------
#ifndef XArrayH
#include <XArray.h>
#endif
namespace zdhsoft
{

/*
///////////////////////////////////////////////////////////////////////////////
[Name]XStack<T>
[Title]堆栈类
///////////////////////////////////////////////////////////////////////////////
[Description]
    堆栈类模板,基于动态数组
    主要的方法有Pop,Push
[Version]1.0
[Author]Rex Winter
[Date]2005-1-9
///////////////////////////////////////////////////////////////////////////////
*/
template<class T>
class XStack
{
public:
    XStack(int iPrepareLength = 0);
    ~XStack();
    //method
    bool Empty() const
    {
        if( m_Data.GetLength() == 0 ) return true;
        else return false;
    }
    void Clear()
    {
        m_Data.Clear();
    }
    void Push(const T & v)
    {
        m_Data.PushBack(v);
    }
    bool Pop()         //弹出一个元素,这个元素将被抛弃
    {
        return m_Data.PopBack();
    }
    bool Pop(T & v)    //弹出一个元素,并通过引用返回
    {
        return m_Data.PopBack(v);
    }
    const T & Top() const
    {
        if( Empty() ) throw XExceptionIsEmpty("XStack<T>");
        return m_Data[m_Data.GetLength()-1];
    }
    //operator
    const T & operator[](int Index) const  //根据下标取值
    {
        return m_Data[Index];
    }
    XStack<T> & operator=(const XStack<T> &aStack )
    {
        if( this != &aStack )
        {
            m_Data = aStack.m_Data;
        }
        return *this;
    }
    //压入一个数据
    XStack<T> & operator<<(const T & v)
    {
        m_Data.PushBack(v);
        return *this;
    }
    //弹出一个数据
    XStack<T> & operator>>(T & v)
    {
        if( !m_Data.PopBack(v) ) throw XExceptionIsEmpty("XStack<T>");
        return *this;
    }

    int GetLength() const
    {
        return m_Data.GetLength();
    }
    //property
    __property int Length = { read = GetLength };
private:
    XDynamicArray<T> m_Data;
};

//模板类代码
//------------------------------------------------------------------------------
/*
////////////////////////////////////////////////////////////////////////////////
[Name]XStack<T>
[Title]构造函数
////////////////////////////////////////////////////////////////////////////////
[param]
    <int default = 0>size 初始化栈的容量
[Description]
    构造函数
[Version]1.0
[Author]Rex Winter
[Date]2005-1-9
////////////////////////////////////////////////////////////////////////////////
*/
template<class T>
XStack<T>::XStack(int iPrepareLength)
    :m_Data(0,iPrepareLength)
{}
/*
////////////////////////////////////////////////////////////////////////////////
[Name]XStack<T>
[Title]析构函数
////////////////////////////////////////////////////////////////////////////////
[Description]
    析构函数
[Version]1.0
[Author]Rex Winter
[Date]2005-1-9
////////////////////////////////////////////////////////////////////////////////
*/
template<class T>
XStack<T>::~XStack()
{
    Clear();
}


}
#endif
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -