Array.h
上传用户:hehe2haha
上传日期:2013-08-16
资源大小:161k
文件大小:2k
源码类别:

CAD

开发平台:

Visual C++

  1. // Array.h: interface for the CArray class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_ARRAY_H__D06D4410_2BCF_4F67_8852_05EF6312A10B__INCLUDED_)
  5. #define AFX_ARRAY_H__D06D4410_2BCF_4F67_8852_05EF6312A10B__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. template <class T>
  10. class CArray  
  11. {
  12. public:
  13. CArray()
  14. {
  15. size = 100;
  16. top = -1;
  17. element = new T[size];
  18. }
  19. virtual ~CArray()
  20. {
  21. RemoveAll();
  22. delete []element;
  23. }
  24. public:
  25. //增加一个元素
  26. void Add( T nT)
  27. {
  28. if(top+1==size)
  29. GrowArray(100);
  30. element[++top] = nT;
  31. }
  32. //数组动态增长
  33. void GrowArray(int nLength)
  34. {
  35. T *pTempElement = new T[size +nLength];
  36. for(int i= 0;i<size;i++)
  37. {
  38. pTempElement[i] = element[i];
  39. }
  40. delete []element;
  41. size += nLength;
  42. element = pTempElement;
  43. }
  44. //删除一个元素
  45. BOOL RemoveAt(int nIndex)
  46. {
  47. if(nIndex<0||nIndex>top)
  48. return 0;
  49. else
  50. {
  51. if(element[nIndex] != NULL)
  52. {
  53. delete element[nIndex];
  54. }
  55. for(int i = nIndex+1;i<=top;i++)
  56. {
  57. element[i-1] = element[i];
  58. }
  59. top--;
  60. return 1;
  61. }
  62. }
  63. //删除全部元素
  64. void RemoveAll()
  65. {
  66. for(int i = 0;i<=top;i++)
  67. {
  68. if(element[i] != NULL)
  69. {
  70. delete element[i];
  71. element[i]= NULL;
  72. }
  73. }
  74. top = -1;
  75. }
  76. T operator[](int nPos)
  77. {
  78. if(nPos<0||nPos>top)
  79. throw "error";
  80. return element[nPos];
  81. }
  82. int GetArraySize()
  83. {
  84. return (top+1);
  85. }
  86. public:
  87. T   *element;
  88. int size;
  89. int top;
  90. };
  91. #endif // !defined(AFX_ARRAY_H__D06D4410_2BCF_4F67_8852_05EF6312A10B__INCLUDED_)