?? xstack.h
字號:
//---------------------------------------------------------------------------
#ifndef XStackH
#define XStackH
//---------------------------------------------------------------------------
#ifndef XArrayH
#include <XArray.h>
#endif
namespace zdhsoft
{
/*
///////////////////////////////////////////////////////////////////////////////
[Name]XStack<T>
[Title]堆棧類
///////////////////////////////////////////////////////////////////////////////
[Description]
堆棧類模板,基于動態(tài)數(shù)組
主要的方法有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 //根據(jù)下標取值
{
return m_Data[Index];
}
XStack<T> & operator=(const XStack<T> &aStack )
{
if( this != &aStack )
{
m_Data = aStack.m_Data;
}
return *this;
}
//壓入一個數(shù)據(jù)
XStack<T> & operator<<(const T & v)
{
m_Data.PushBack(v);
return *this;
}
//彈出一個數(shù)據(jù)
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]構造函數(shù)
////////////////////////////////////////////////////////////////////////////////
[param]
<int default = 0>size 初始化棧的容量
[Description]
構造函數(shù)
[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]析構函數(shù)
////////////////////////////////////////////////////////////////////////////////
[Description]
析構函數(shù)
[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 + -