add ipi11 1

This commit is contained in:
2020-01-16 18:42:10 +01:00
parent a390a2947a
commit 6a9412035c
2 changed files with 197 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
template <class T>
class SimpleArray {
public:
SimpleArray (int s, T f);
SimpleArray (const SimpleArray<T>&);
SimpleArray<T>& operator=(const SimpleArray<T>&);
~SimpleArray();
T& operator[](int i);
int numIndices();
int minIndex();
int maxIndex();
bool isMember(int i);
private:
int n; // Anzahl Elemente
T *p; // Zeiger auf built-in array
};
// Destruktor
template <class T>
SimpleArray<T>::~SimpleArray () {
delete[] p;
}
// Konstruktor
template <class T>
SimpleArray<T>::SimpleArray (int s, T v) {
n = s;
p = new T[n];
for (int i=0; i<n; i=i+1) p[i]=v;
}
// Copy-Konstruktor
template <class T>
SimpleArray<T>::SimpleArray (const SimpleArray<T>& a) {
n = a.n;
p = new T[n];
for (int i=0; i<n; i=i+1)
p[i]=a.p[i];
}
// Zuweisungsoperator
template <class T>
SimpleArray<T>& SimpleArray<T>::operator=(const SimpleArray<T>& a) {
if (&a!=this) {
if (n!=a.n) {
delete[] p;
n = a.n;
p = new T[n];
}
for (int i=0; i<n; i=i+1) p[i]=a.p[i];
}
return *this;
}
template <class T>
inline T& SimpleArray<T>::operator[] (int i) {
return p[i];
}
template <class T>
inline int SimpleArray<T>::numIndices () {
return n;
}
template <class T>
inline int SimpleArray<T>::minIndex () {
return 0;
}
template <class T>
inline int SimpleArray<T>::maxIndex () {
return n-1;
}
template <class T>
inline bool SimpleArray<T>::isMember (int i) {
return (i>=0 && i<n);
}
template <class T>
std::ostream& operator<< (std::ostream& s, SimpleArray<T>& a) {
s << "#( ";
for (int i=a.minIndex(); i<=a.maxIndex(); i=i+1)
s << a[i] << " ";
s << ")" << std::endl;
return s;
}