Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

41 行
966B

  1. class DynamicFloatArray : public FloatArray {
  2. public:
  3. DynamicFloatArray () {n=0; o=0; p=new float[1];}
  4. virtual ~DynamicFloatArray() {delete[] p;}
  5. virtual float& operator[](int i);
  6. virtual int numIndices () {return n;}
  7. int minIndex () {return o;}
  8. int maxIndex () {return o+n-1;}
  9. bool isMember (int i) {return (i>=o)&&(i<o+n);}
  10. private:
  11. int n; // Anzahl Elemente
  12. int o; // Ursprung der Indexmenge
  13. float *p; // Zeiger auf built-in array
  14. } ;
  15. float& DynamicFloatArray::operator[] (int i)
  16. {
  17. if (i<o || i>=o+n)
  18. { // resize
  19. int new_o, new_n;
  20. if (i<o) {
  21. new_o = i;
  22. new_n = n+o-i;
  23. }
  24. else {
  25. new_o = o;
  26. new_n = i-o+1;
  27. }
  28. float *q = new float[new_n];
  29. for (int i=0; i<new_n; i=i+1) q[i]=0.0;
  30. for (int i=0; i<n; i=i+1)
  31. q[i+o-new_o] = p[i];
  32. delete[] p;
  33. p = q;
  34. n = new_n;
  35. o = new_o;
  36. }
  37. return p[i-o];
  38. }