#include <iostream>
#include <stack>
template<typename Type, typename Container = std::deque<Type>>
class stack : protected std::stack<Type, Container> {
using base_type = std::stack<Type, Container>;
public:
using container_type = typename base_type::container_type;
using value_type = typename base_type::value_type;
using size_type = typename base_type::size_type;
using reference = typename base_type::reference;
using const_reference = typename base_type::const_reference;
using base_type::top;
using base_type::empty;
using base_type::size;
using base_type::push;
using base_type::emplace;
using base_type::pop;
using base_type::swap;
using base_type::base_type;
container_type & get_container() noexcept {
return this->c;
}
constexpr container_type const& get_container() const noexcept {
return this->c;
}
};
int main() {
stack<int> values;
for (int i = 0; i != 10; ++i) {
values.push(i);
}
for (auto value : values.get_container()) {
std::cout << value << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CgoKdGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgdHlwZW5hbWUgQ29udGFpbmVyID0gc3RkOjpkZXF1ZTxUeXBlPj4KY2xhc3Mgc3RhY2sgOiBwcm90ZWN0ZWQgc3RkOjpzdGFjazxUeXBlLCBDb250YWluZXI+IHsKCiAgIHVzaW5nIGJhc2VfdHlwZSA9IHN0ZDo6c3RhY2s8VHlwZSwgQ29udGFpbmVyPjsKCnB1YmxpYzoKICAgdXNpbmcgY29udGFpbmVyX3R5cGUgICAgPSB0eXBlbmFtZSBiYXNlX3R5cGU6OmNvbnRhaW5lcl90eXBlOwogICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IHR5cGVuYW1lIGJhc2VfdHlwZTo6dmFsdWVfdHlwZTsKICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAgPSB0eXBlbmFtZSBiYXNlX3R5cGU6OnNpemVfdHlwZTsKICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgPSB0eXBlbmFtZSBiYXNlX3R5cGU6OnJlZmVyZW5jZTsKICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlICAgPSB0eXBlbmFtZSBiYXNlX3R5cGU6OmNvbnN0X3JlZmVyZW5jZTsKCiAgIAogICB1c2luZyBiYXNlX3R5cGU6OnRvcDsKICAgCiAgIHVzaW5nIGJhc2VfdHlwZTo6ZW1wdHk7CiAgIHVzaW5nIGJhc2VfdHlwZTo6c2l6ZTsKCiAgIHVzaW5nIGJhc2VfdHlwZTo6cHVzaDsKICAgdXNpbmcgYmFzZV90eXBlOjplbXBsYWNlOwogICB1c2luZyBiYXNlX3R5cGU6OnBvcDsKICAgdXNpbmcgYmFzZV90eXBlOjpzd2FwOwoKICAgdXNpbmcgYmFzZV90eXBlOjpiYXNlX3R5cGU7CgogICBjb250YWluZXJfdHlwZSAmIGdldF9jb250YWluZXIoKSBub2V4Y2VwdCB7CiAgICAgIHJldHVybiB0aGlzLT5jOwogICB9CiAgIGNvbnN0ZXhwciBjb250YWluZXJfdHlwZSBjb25zdCYgZ2V0X2NvbnRhaW5lcigpIGNvbnN0IG5vZXhjZXB0IHsKICAgICAgcmV0dXJuIHRoaXMtPmM7CiAgIH0KfTsKCgppbnQgbWFpbigpIHsKICAgc3RhY2s8aW50PiB2YWx1ZXM7CiAgIAogICBmb3IgKGludCBpID0gMDsgaSAhPSAxMDsgKytpKSB7CiAgICAgIHZhbHVlcy5wdXNoKGkpOwogICB9CgogICBmb3IgKGF1dG8gdmFsdWUgOiB2YWx1ZXMuZ2V0X2NvbnRhaW5lcigpKSB7CiAgICAgIHN0ZDo6Y291dCA8PCB2YWx1ZSA8PCBzdGQ6OmVuZGw7CiAgIH0KfQo=