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

📄 staticarray.h

📁 真正的传奇源代码
💻 H
字号:


#pragma once





template< class T >
class CStaticArray
{
public:
	// 努贰胶 T绰 酒贰 牢磐其捞胶甫 备泅窍咯具 茄促.
	interface IArrayData
	{
		virtual bool IsEmpty() = 0;
	};

public:
	T *  m_pElements;
	int  m_nSize;
	int  m_nCursor;	

public:
	CStaticArray( int nSize );
	virtual ~CStaticArray();

	int  GetFreeKey();
	T &  operator []( int nIndex );
};


template< class T >
CStaticArray< T >::CStaticArray( int nSize )
{
	m_pElements	= new T[ nSize ];
	m_nSize		= nSize;
	m_nCursor	= 0;
}


template< class T >
CStaticArray< T >::~CStaticArray()
{
	if ( m_pElements )
		delete[] m_pElements;
}


template< class T >
int CStaticArray< T >::GetFreeKey()
{
	int nFind;

	for ( nFind = m_nCursor; nFind < m_nSize; nFind++ )
	{
		if ( m_pElements[nFind].IsEmpty() )
		{
			m_nCursor++;
			return nFind;
		}
	}

	for ( nFind = 0; nFind < m_nCursor; nFind++ )
	{
		if ( m_pElements[nFind].IsEmpty() )
		{
			m_nCursor++;
			return nFind;
		}
	}

	return -1;
}


template< class T >
T & CStaticArray< T >::operator []( int nIndex )
{
	return m_pElements[ nIndex ];
}

⌨️ 快捷键说明

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