📄 sh_array.h
字号:
// SH_Array.h: interface for the SH_Array class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SH_ARRAY_H__80D8F99D_28F7_4711_839A_A8A4EB304719__INCLUDED_)
#define AFX_SH_ARRAY_H__80D8F99D_28F7_4711_839A_A8A4EB304719__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "SH_Object.h"
template<class ARG>
class AFX_EXT_CLASS SH_Array : public SH_Object
{
public:
SH_Array();
virtual ~SH_Array();
//Function decl
BOOL Create(int nSize);
BOOL Store(int index,ARG val);
ARG & Retrieve(int index);
ARG Retrieve(int index) const;
int GetSize() const;
BOOL Resize(int nNewSize);
//Operator decl
ARG operator [](int nIndex) const;
ARG & operator [](int nIndex);
private:
int m_nSize;
ARG * m_pArray;
};
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
template<class ARG>
SH_Array<ARG>::SH_Array()
{
m_nSize = 0;
m_pArray = NULL;
}
template<class ARG>
SH_Array<ARG>::~SH_Array()
{
m_nSize = 0;
SAFE_DELETE_ARRAY(m_pArray);
}
template<class ARG>
BOOL SH_Array<ARG>::Create(int nSize)
{
if(nSize < 1)
return FALSE;
if(m_nSize >0 )
return FALSE;
m_nSize = nSize;
m_pArray = new ARG[nSize];
memset(m_pArray,0,nSize * sizeof(ARG));
return (m_pArray != NULL);
}
template<class ARG>
BOOL SH_Array<ARG>::Store(int index,ARG val)
{
BOOL bRet = FALSE;
if(index >=0 && index < m_nSize && m_pArray)
{
m_pArray[index] = val;
bRet = TRUE;
}
return bRet;
}
template<class ARG>
ARG & SH_Array<ARG>::Retrieve(int index)
{
ASSERT(index >=0 && index < m_nSize && m_pArray);
return m_pArray[index];
}
template<class ARG>
ARG SH_Array<ARG>::Retrieve(int index) const
{
ASSERT(index >=0 && index < m_nSize && m_pArray);
return m_pArray[index];
}
template<class ARG>
AFX_INLINE int SH_Array<ARG>::GetSize() const
{
return m_nSize;
}
template<class ARG>
BOOL SH_Array<ARG>::Resize(int nNewSize)
{
SAFE_DELETE_ARRAY(m_pArray);
m_nSize = 0;
return Create(nNewSize);
}
template<class ARG>
ARG & SH_Array<ARG>::operator [] (int nIndex)
{
return Retrieve(nIndex);
}
template<class ARG>
ARG SH_Array<ARG>::operator [] (int nIndex) const
{
return Retrieve(nIndex);
}
#endif // !defined(AFX_SH_ARRAY_H__80D8F99D_28F7_4711_839A_A8A4EB304719__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -