StaticArray.h
上传用户:tt_chan
上传日期:2009-12-03
资源大小:4523k
文件大小:1k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #pragma once
  2. template< class T >
  3. class CStaticArray
  4. {
  5. public:
  6. // 努贰胶 T绰 酒贰 牢磐其捞胶甫 备泅窍咯具 茄促.
  7. interface IArrayData
  8. {
  9. virtual bool IsEmpty() = 0;
  10. };
  11. public:
  12. T *  m_pElements;
  13. int  m_nSize;
  14. int  m_nCursor;
  15. public:
  16. CStaticArray( int nSize );
  17. virtual ~CStaticArray();
  18. int  GetFreeKey();
  19. T &  operator []( int nIndex );
  20. };
  21. template< class T >
  22. CStaticArray< T >::CStaticArray( int nSize )
  23. {
  24. m_pElements = new T[ nSize ];
  25. m_nSize = nSize;
  26. m_nCursor = 0;
  27. }
  28. template< class T >
  29. CStaticArray< T >::~CStaticArray()
  30. {
  31. if ( m_pElements )
  32. delete[] m_pElements;
  33. }
  34. template< class T >
  35. int CStaticArray< T >::GetFreeKey()
  36. {
  37. int nFind;
  38. for ( nFind = m_nCursor; nFind < m_nSize; nFind++ )
  39. {
  40. if ( m_pElements[nFind].IsEmpty() )
  41. {
  42. m_nCursor++;
  43. return nFind;
  44. }
  45. }
  46. for ( nFind = 0; nFind < m_nCursor; nFind++ )
  47. {
  48. if ( m_pElements[nFind].IsEmpty() )
  49. {
  50. m_nCursor++;
  51. return nFind;
  52. }
  53. }
  54. return -1;
  55. }
  56. template< class T >
  57. T & CStaticArray< T >::operator []( int nIndex )
  58. {
  59. return m_pElements[ nIndex ];
  60. }