#include #include class Stack { public: Stack& operator<<(int value) { values.push_back(value); return *this; } Stack& operator>>(int& value) { value = values.back(); values.pop_back(); return *this; } unsigned int size() const { return values.size(); } std::string to_string() const { std::string result { }; for (size_t i { values.size() }; i > 0; --i) { result += std::to_string(values[i - 1]) + " "; } result.pop_back(); return result; } private: std::vector values {}; }; int main() { Stack st { }; st << 3 << 2 << 1; std::cout << st.to_string()<< std::endl; while (st.size() > 0) { int value; st >> value; std::cout << value << " "; } std::cout << std::endl; }