#include using namespace std; template class DynArray { public: T *elements; int size; DynArray () { elements = 0; size = 0; } void add (T x) { T *save = elements; elements = new T [size+1]; //size*2 for (int i = 0; i < size; i++) elements[i] = save[i]; delete save; elements[size] = x; size++; } int indexOf (T x) { int i = 0; while (i < size && elements[i] != x) i++; if (i >= size) i = -1; return i; } void remove (T x) { int ix = indexOf (x); if (ix < 0) return; T *newarr = new T [size-1]; int i; for (i = 0; i < ix; i++) newarr[i] = elements[i]; for (i = ix+1; i < size; i++) newarr[i-1] = elements[i]; delete elements; size--; elements = newarr; } void print () { cout << "["; for (int i = 0; i < this->size; i++) { cout << " " << this->elements[i]; } cout << " ]"; } DynArray concat (DynArray tail) { DynArray res; /*int i; for (i = 0; i < this->size; i++) res.add(this->elements[i]); for (i = 0; i < tail.size; i++) res.add(tail.elements[i]);*/ //this->elements ++ tail.elements res.elements = new T [this->size + tail.size]; int i; for (i = 0; i < this->size; i++) res.elements[i] = this->elements[i]; for (i = 0; i < tail.size; i++) res.elements[i+this->size] = tail.elements[i]; res.size = this->size + tail.size; return res; } bool equals (DynArray other) { if (this->size != other.size) return false; for (int i = 0; i < size; i++) if (this->elements[i] != other.elements[i]) return false; return true; } //*this <= other bool subset (DynArray other) { for (int i = 0; i < this->size; i++) if (other.indexOf (this->elements[i]) == -1) return false; return true; } void assign (DynArray other) { //this->elements = other.elements; СПОДЕЛЯНЕ НА ПАМЕТ!!! delete this->elements; this->elements = new T [other.size]; for (int i =0; i < other.size; i++) this->elements[i] = other.elements[i]; this->size = other.size; } }; int main () { m1.assign (m2.assign(m3)); //m1=m2=m3=... DynArray a; DynArray m1,m2; m1.add (1); m1.add (1); m1.add (1); m1.add (1); m2.add (2); m2.add (2); m2.add (2); m2.add (2); m2.add (4); m2.add (5); m2.add (6); m1.print(); m2.print(); m1.assign (m2); m1.print(); m2.elements[0] = 70; m1.print(); //.... //myArr.remove (5); //m1.concat (m2).print(); /* DynArray m3; m3 = m1.concat (m2); m3.print (); */ //cout << m1 + m2; //cout << m1.equals(m2); //cout << m1.subset (m2); //a1.assign(a2); //a1 = a2; //{1,2,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1} <= {1,2,1,2,3,4,5,6,7,8} //if (m1 == m2) // ... //cout << myArr.get(5) + myArr.ger (7); //cout << myArr[5] + myArr[7]; // myArr += 4; // arr2 = arr1 + arr3; }