Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <Windows.h>
- #include <locale>
- using namespace std;
- template <class T> class _stack
- {
- public:
- _stack() {cout << "Debug - stack created. Type of stack - " << typeid(T).name() << endl;};
- ~_stack() {_ourstack.clear(); cout << "Debug - stack of " << typeid(T).name() << " destroyed" << endl;};
- void _push(T value) {_ourstack.push_back(value); cout << "Debug - stack pushed with [ " << value << " ];" << endl;}; // Добавляет в конец новый элемент
- void _pop() {cout << "Debug - stack popped, deleted element [ " << _ourstack.back() << " ];" << endl; _ourstack.pop_back(); }; // Удаляет последний элемент
- T _return() const {return _ourstack.back();}; // Возвращает последний элемент
- void _print() const {cout << _ourstack.back();}; // Печатает последний элемент. Пытается напечатать через iostream/cout
- void _clear() {_ourstack.clear();}; // Стирает весь стек
- bool _empty() {return _ourstack.empty();};
- int _size() const {return _ourstack.size();}; // Размер стека
- private:
- vector <T> _ourstack;
- };
- int main()
- {
- setlocale(LC_ALL,"Russian");
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- cout << "Сенчурин Алексей. М-135, вариант 6;" << endl << endl;
- cout << "Во всех вариантах требуется создать шаблон некоторого целевого класса А," << endl
- << "возможно, реализованный с применением некоторого серверного класса В. " << endl
- << "Это означает, что объект класса В используется как элемент класса А. " << endl
- << "В качестве серверного класса может быть указан либо класс, созданный" << endl
- << "программистом, либо класс из стандартной библиотеки — например, std::vector. " << endl
- << "Варианты целевых или серверных классов, создаваемых программистом, приведены " << endl
- << "в табл. 3.1. Информацию о работе с динамическими структурами данных " << endl
- << "(линейный список, стек, односторонняя очередь, бинарное дерево) см. в учебнике " << endl
- << "(с. 114-127), а также в первой книге практикума [2] (семинар 9)." << endl;
- system("pause");
- system("cls");
- _stack<int> numbers;
- cout << "Size of stack : " << numbers._size() << endl;
- numbers._push(45);
- numbers._push(35);
- numbers._push(25);
- numbers._push(15);
- numbers._push(5);
- cout << "Size of stack : " << numbers._size() << endl;
- cout << "At top of stack : " << numbers._return() << endl;
- numbers._pop();
- numbers._pop();
- numbers._pop();
- cout << "Size of stack : " << numbers._size() << endl;
- cout << "At top of stack : " << numbers._return() << endl;
- if (numbers._empty())
- cout << "Stack is empty" << endl;
- else
- cout << "Size of stack is " << numbers._size() << endl;
- system("pause");
- system("cls");
- _stack<char*> strings;
- cout << "Size of stack : " << strings._size() << endl;
- strings._push("String 1");
- strings._push("String 2");
- strings._push("String 3");
- strings._push("String 4");
- strings._push("String 5");
- strings._push("String 6");
- cout << "Size of stack : " << strings._size() << endl;
- cout << "At top of stack : " << strings._return() << endl;
- strings._pop();
- strings._pop();
- strings._pop();
- cout << "Size of stack : " << strings._size() << endl;
- cout << "At top of stack : " << strings._return() << endl;
- if (numbers._empty())
- cout << "Stack is empty" << endl;
- else
- cout << "Size of stack is " << strings._size() << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement