Write a stack class that has an STL vector as a data member. Your class should implement push, peek, and pop. Solution template class Stack { public: Stack(const std::initializer_list& i):elem(i) {} int size() const { return elem.size(); } bool empty() const { return elem.empty();} void push(const T&); T pop(); T peek(); private: std::vector elem; }; template void Stack::push(const T& t) { elem.push_back(t); } template T Stack::pop() { if (empty()) { throw std::out_of_range(\"underflow\"); } auto x = elem.back(); elem.pop_back(); return x; } template T Stack::peek() { if (empty()) { throw std::out_of_range(\"underflow\"); } return elem.back(); }.