Advertisement
35657

Untitled

Jun 7th, 2023
648
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.20 KB | None | 0 0
  1. // Задание:
  2. // 1) реализовать шаблонный вариант SimpleVector
  3. // 2) реализовать две отдельные шаблонные функции:
  4. // void print(...) ... для вывода элементов любого варианта SimpleVector
  5. // void sort(...) ... для сортировки любого варианта SimpleVector
  6. // 3) проверить работоспособность кода, раскомментировав строки в main
  7.  
  8.  
  9. #include <iostream>
  10.  
  11. using namespace std;
  12.  
  13. template<typename T>
  14. class SimpleVector {
  15.  
  16. public:
  17.  
  18.     SimpleVector() : arr_(new T[10]), size_(10) {}
  19.  
  20.     SimpleVector(int size) : arr_(new T[size]), size_(size) {}
  21.  
  22.     SimpleVector(const SimpleVector& object) : arr_(new T[object.size_] {}), size_(object.size_) {
  23.         for (int i = 0; i < size_; i++) {
  24.             arr_[i] = object.arr_[i];
  25.         };
  26.     }
  27.  
  28.     SimpleVector& operator=(const SimpleVector& object) {
  29.         if (!(this == &object)) {
  30.             delete[] arr_;
  31.             arr_ = new T[object.size_];
  32.             size_ = object.size_;
  33.             for (int i = 0; i < size_; i++) {
  34.                 arr_[i] = object.arr_[i];
  35.             }
  36.         }
  37.         return *this;
  38.     }
  39.  
  40.     SimpleVector(SimpleVector&& object) : arr_(object.arr_), size_(object.size_) {
  41.         object.arr_ = nullptr;
  42.         object.size_ = 0;
  43.     }
  44.  
  45.     SimpleVector& operator=(SimpleVector&& object) {
  46.         if (!(this == &object)) {
  47.             delete[] arr_;
  48.             arr_ = object.arr_;
  49.             size_ = object.size_;
  50.             object.arr_ = nullptr;
  51.             object.size_ = 0;
  52.         }
  53.         return *this;
  54.     }
  55.  
  56.     T& operator[] (int index) {
  57.         if (index >= 0 && index < size_) {
  58.             return arr_[index];
  59.         }
  60.     }
  61.  
  62.     T& operator[] (int index) const {
  63.         if (index >= 0 && index < size_) {
  64.             return arr_[index];
  65.         }
  66.     }
  67.  
  68.     int Size() const {
  69.         return size_;
  70.     }
  71.  
  72.     ~SimpleVector() {
  73.         delete[] arr_;
  74.     }
  75.  
  76. private:
  77.     T* arr_;
  78.     int size_;
  79. };
  80.  
  81.  
  82.  
  83. template<typename T>
  84. void print(const SimpleVector<T>& vec) {
  85.     for (int i = 0; i < vec.Size(); i++) {
  86.         cout << vec[i] << ' ';
  87.     }
  88.     cout << endl;
  89. }
  90.  
  91. template<typename T>
  92. void sort(SimpleVector<T>& vec) {
  93.     for (int k = 0; k < vec.Size(); k++) {
  94.         for (int j = 0; j < vec.Size() - 1; j++) {
  95.             if (vec[j] > vec[j + 1]) {
  96.                 T temp = vec[j];
  97.                 vec[j] = vec[j + 1];
  98.                 vec[j + 1] = temp;
  99.             }
  100.         }
  101.     }
  102. }
  103.  
  104.  
  105.  
  106. int main() {
  107.     SimpleVector<int> vec;
  108.     for (int i = 0; i < vec.Size(); i++) {
  109.         vec[i] = rand() % 10;
  110.     }
  111.     for (int i = 0; i < vec.Size(); i++) {
  112.         cout << vec[i] << " ";
  113.     }
  114.     cout << endl;
  115.  
  116.     SimpleVector<int> IntVector;
  117.     for (int i = 0; i < IntVector.Size(); i++) {
  118.         IntVector[i] = rand() % 10;
  119.     }
  120.     cout << "IntVector:" << endl;
  121.     print(IntVector);
  122.     cout << endl;
  123.     cout << "Sorted IntVector:" << endl;
  124.     sort(IntVector);
  125.     print(IntVector);
  126.     cout << endl;
  127.  
  128.     SimpleVector<string> StringVector;
  129.     StringVector[0] = "two";
  130.     StringVector[1] = "seven";
  131.     StringVector[2] = "zero";
  132.     StringVector[3] = "four";
  133.     StringVector[4] = "one";
  134.     StringVector[5] = "three";
  135.     StringVector[6] = "five";
  136.     StringVector[7] = "six";
  137.     StringVector[8] = "eight";
  138.     StringVector[9] = "nine";
  139.     cout << "StringVector:" << endl;
  140.     print(StringVector);
  141.     cout << endl;
  142.     cout << "Sorted StringVector:" << endl;
  143.     sort(StringVector);
  144.     print(StringVector);
  145.     cout << endl;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement