Problem 1: Write the definition and declaration of the stack of integers with unbounded size, implemented as an array. It should be possible to use the class as in the following example. Stack a; // creates an empty stack a << 10; // puts ten to the top of the stack a << 12; int ia, ib, ic, id; Stack b=a; a >> ia >> ib; b >> ic; b >> id; cout << ia << " " << ib << " " << ic << " " << id << endl; // prints "12 10 12 10" a.clear(); // clears the contents of the stack Problem 2: Implement the definition and declaration of the vector template. The vector does not initialize its contents, access to uninitialized elements should throw an exception. It should be possible to use the class as in the following example. vector iv(4); iv[3]=42; cout << iv[3] << endl; // prints "42" try { cout << iv[1] << endl; // throw exception } catch (vector::Uninitialized&) { cout << "Uninitialized vector element!" << endl; };