Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
1.8KB

  1. template <class T>
  2. class SimpleArray {
  3. public:
  4. SimpleArray (int s, T f);
  5. SimpleArray (const SimpleArray<T>&);
  6. SimpleArray<T>& operator=(const SimpleArray<T>&);
  7. ~SimpleArray();
  8. T& operator[](int i);
  9. int numIndices();
  10. int minIndex();
  11. int maxIndex();
  12. bool isMember(int i);
  13. private:
  14. int n; // Anzahl Elemente
  15. T *p; // Zeiger auf built-in array
  16. };
  17. // Destruktor
  18. template <class T>
  19. SimpleArray<T>::~SimpleArray () {
  20. delete[] p;
  21. }
  22. // Konstruktor
  23. template <class T>
  24. SimpleArray<T>::SimpleArray (int s, T v) {
  25. n = s;
  26. p = new T[n];
  27. for (int i=0; i<n; i=i+1) p[i]=v;
  28. }
  29. // Copy-Konstruktor
  30. template <class T>
  31. SimpleArray<T>::SimpleArray (const SimpleArray<T>& a) {
  32. n = a.n;
  33. p = new T[n];
  34. for (int i=0; i<n; i=i+1)
  35. p[i]=a.p[i];
  36. }
  37. // Zuweisungsoperator
  38. template <class T>
  39. SimpleArray<T>& SimpleArray<T>::operator=(const SimpleArray<T>& a) {
  40. if (&a!=this) {
  41. if (n!=a.n) {
  42. delete[] p;
  43. n = a.n;
  44. p = new T[n];
  45. }
  46. for (int i=0; i<n; i=i+1) p[i]=a.p[i];
  47. }
  48. return *this;
  49. }
  50. template <class T>
  51. inline T& SimpleArray<T>::operator[] (int i) {
  52. return p[i];
  53. }
  54. template <class T>
  55. inline int SimpleArray<T>::numIndices () {
  56. return n;
  57. }
  58. template <class T>
  59. inline int SimpleArray<T>::minIndex () {
  60. return 0;
  61. }
  62. template <class T>
  63. inline int SimpleArray<T>::maxIndex () {
  64. return n-1;
  65. }
  66. template <class T>
  67. inline bool SimpleArray<T>::isMember (int i) {
  68. return (i>=0 && i<n);
  69. }
  70. template <class T>
  71. std::ostream& operator<< (std::ostream& s, SimpleArray<T>& a) {
  72. s << "#( ";
  73. for (int i=a.minIndex(); i<=a.maxIndex(); i=i+1)
  74. s << a[i] << " ";
  75. s << ")" << std::endl;
  76. return s;
  77. }