Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Задание:
- Описать шаблон класса для хранения данных (контейнер). Данные
- должны хранится, например, в виде массива. Шаблон должен
- включать в себя функции добавления данных, удаления
- данных, вывода данных на консоль ( info() ). Реализовать итератор для
- перебора данных контейнера так, чтобы он перебирал элементы
- в следующем порядке: сначала первый добавленный в массив элемент,
- затем последний, затем второй добавленный в массив элемент,
- затем предпоследний и т.д. При достижении последнего элемента
- итератор должен «переключаться» снова на первый элемент, то
- есть быть «кольцевым». Продемонстрировать работу шаблона на
- объектах как встроенного типа, так и собственного класса. Для
- этого создать собственный класс и перегрузить в нем нужные
- функции-операции.
- */
- #include "stdafx.h"
- #include<iostream>
- #include<time.h>
- using namespace std;
- template <typename T>
- struct Elem
- {
- T *mass;
- int razmer;
- Elem * next, *prev;
- };
- template <typename T>
- class Array
- {
- Elem<T> * Head, *Hvost;
- int Count;
- int size;
- public:
- Array();
- Array(int);
- Array(const Array&);
- ~Array();
- void Getsize();
- void SetSize(int size, int grow);
- void GetUpperBound();
- bool IsEmpty();
- void FreeExtra();
- void RemoveAll();
- void GetAt(int pos);
- void SetAt(int pos);
- Array &operator[](const Array&);
- Array& operator=(const Array&);
- void Add();
- void Append(const Array&);
- void GetData();
- void InsertAt(int pos);
- void RemoveAt(int pos);
- void Show(const Array&);
- };
- template <typename T>
- Array<T>::Array()
- {
- Count = 0;
- Head = Hvost = NULL;
- size = 0;
- }
- template <typename T>
- Array<T>::Array(int n)
- {
- Elem *temp = new Elem();
- temp->mass = new int[n];
- temp->razmer = n;
- for (int i = 0; i<n; i++)
- temp->mass[i] = rand() % 20;
- Count = 0;
- Head = Hvost = NULL;
- size = 0;
- }
- template <typename T>
- Array<T>::Array(const Array &N)
- {
- Elem<T> *temp = N.Head;
- while (temp != 0){
- AddHvost(temp->mass);
- temp = temp->next;
- }
- }
- template <typename T>
- void Array<T>::Show(const Array&N)
- {
- Elem<T> *temp = N.Head;
- while (temp != 0){
- for (int i = 0; i<temp->razmer; i++)
- cout << temp->mass << " ";
- temp = temp->next;
- }
- }
- int main()
- {
- setlocale(LC_ALL, "rus");
- int num; // размер массива
- cout << "Ведите количество элементов стека: " << endl;
- cin >> num; // получение от пользователя размера массива
- Array <int> myArray(num);
- myArray.Add();
- myArray.Append(num);
- myArray.FreeExtra();
- myArray.GetAt(0);
- myArray.GetData();
- myArray.Getsize();
- myArray.GetUpperBound();
- myArray.InsertAt(2);
- myArray.IsEmpty();
- myArray.Show(num);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement