Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cmath>
- using namespace std;
- template <typename T> class vectorClass
- {
- // целочисленный указатель
- // в котором хранится адрес нашего вектора
- T* arr;
- // вместимость общая память
- // вместимость вектора
- int capacity;
- // количество элементов присутствующих в векторе
- int current;
- public:
- // конструктор по умолчанию для инициализации
- // начальная емкость 1 элемент и распределение
- // памяти с использованием динамического распределния
- vectorClass()
- {
- arr = new T[1];
- capacity = 1;
- current = 0;
- }
- // функция добавления елемента в конец
- void push(T data)
- {
- // если количество элементов равно вместимости то
- // это означает что нет места чтобы разместить большее
- // количество элементов поэтому нужно
- // удвоить емкость
- if (current == capacity) {
- T* temp = new T[2 * capacity];
- // копирование старых эелементов массива в новый
- for (int i = 0; i < capacity; i++) {
- temp[i] = arr[i];
- }
- // удаление предыдущего массива
- delete[] arr;
- capacity *= 2;
- arr = temp;
- }
- arr[current] = data;
- current++;
- }
- // функция для добавления эелемента по любому индексу
- void push(int data, int index)
- {
- // если индекс равен вместимости
- if (index == capacity)
- push(data);
- else
- arr[index] = data;
- }
- // функция для получения элемента по любому индексу
- T get(int index)
- {
- // если индекс вне диапазона
- if (index < current)
- return arr[index];
- }
- // функция для удаления последнего элемента
- void pop() { current--; }
- // функция для получения размера вектора
- int size() { return current; }
- // функция для получения вместимости вектора
- int getcapacity() { return capacity; }
- // функция для вывода элементов массива
- void print()
- {
- for (int i = 0; i < current; i++) {
- cout << arr[i] << " ";
- }
- cout << endl;
- }
- };
- // главная функция
- int main()
- {
- vectorClass<int> v;
- vectorClass<char> v1;
- v.push(10);
- v.push(20);
- v.push(30);
- v.push(40);
- v.push(50);
- v1.push(71);
- v1.push(72);
- v1.push(73);
- v1.push(74);
- cout << "Размер вектора : " << v.size() << endl;
- cout << "Вместимость вектора : " << v.getcapacity() << endl;
- cout << "Элементы вектора : ";
- v.print();
- v.push(100, 1);
- cout << "\nПосле обновления 1 элемента : " << endl;
- cout << "Элементы вектора типа int : " << endl;
- v.print();
- cout << "Элементы вектора типа char : " << endl;
- v1.print();
- cout << "Элементы в 1 индексе типа int : " << v.get(1)
- << endl;
- cout << "Элементы в 1 индексе типа char : "
- << v1.get(1) << endl;
- v.pop();
- v1.pop();
- cout << "\nПосле удаления последнего элемента" << endl;
- cout << "Размер вектора типа int : " << v.size() << endl;
- cout << "Размер вектора типа char: " << v1.size()
- << endl;
- cout << "Вместимость вектора типа int : "
- << v.getcapacity() << endl;
- cout << "Вместимость вектора типа char : "
- << v1.getcapacity() << endl;
- cout << "Элементы вектора типа int : ";
- v.print();
- cout << "Элементы вектора типа char: ";
- v1.print();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement