Advertisement
35657

Untitled

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