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

📄 sh_array.h

📁 rsa算法打的一个包
💻 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 + -