Advertisement
35657

Untitled

Jun 5th, 2023
826
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.96 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class SimpleVector {
  6.  
  7. public:
  8.  
  9.     SimpleVector() : arr_(new int[10]), size_(10) {
  10.         cout << "SimpleVector constructed for " << size_ << " elements, for " << this << endl;
  11.     }
  12.  
  13.     SimpleVector(int size) : arr_(new int[size]), size_(size) {
  14.         cout << "SimpleVector constructed for " << size_ << " elements, for " << this << endl;
  15.     }
  16.  
  17.     SimpleVector(const SimpleVector& object) : arr_(new int[object.size_]), size_(object.size_) {
  18.         for (int i = 0; i < size_; i++) {
  19.             arr_[i] = object.arr_[i];
  20.         };
  21.         cout << "SimpleVector copy constructed for " << size_ << " elements, for " << this << endl;
  22.     }
  23.  
  24.     SimpleVector& operator=(const SimpleVector& object) {
  25.         if (!(this == &object)) {
  26.             delete[] arr_;
  27.             arr_ = new int[object.size_];
  28.             size_ = object.size_;
  29.             for (int i = 0; i < size_; i++) {
  30.                 arr_[i] = object.arr_[i];
  31.             }
  32.         }
  33.  
  34.         cout << "SimpleVector copy operator = for " << size_ << " elements, for " << this << endl;
  35.         return *this;
  36.     }
  37.  
  38.     SimpleVector(SimpleVector&& object) : arr_(object.arr_), size_(object.size_) {
  39.         object.arr_ = nullptr;
  40.         object.size_ = 0;
  41.         cout << "SimpleVector move constructed for " << size_ << " elements, for " << this << endl;
  42.     }
  43.  
  44.     SimpleVector& operator=(SimpleVector&& object) {
  45.         if (!(this == &object)) {
  46.             delete[] arr_;
  47.             arr_ = object.arr_;
  48.             size_ = object.size_;
  49.             object.arr_ = nullptr;
  50.             object.size_ = 0;
  51.         }
  52.  
  53.         cout << "SimpleVector move operator = for " << size_ << " elements, for " << this << endl;
  54.         return *this;
  55.     }
  56.  
  57.     void print() const {
  58.         for (int i = 0; i < 10; i++) {
  59.             cout << arr_[i] << ' ';
  60.         }
  61.         cout << endl;
  62.     }
  63.  
  64.     int& operator[] (int index) {
  65.         if (index >= 0 && index < size_) {
  66.             return arr_[index];
  67.         }
  68.     }
  69.  
  70.     ~SimpleVector() {
  71.         delete[] arr_;
  72.         cout << "SimpleVector destructed for " << size_ << " elements, for " << this << endl;;
  73.     }
  74.  
  75. private:
  76.     int* arr_;
  77.     int size_;
  78. };
  79.  
  80.  
  81. SimpleVector VectorFactory(int arrSize, int starting_point) {
  82.     srand(starting_point);
  83.     SimpleVector vec(arrSize);
  84.     for (int i = 0; i < arrSize; i++) {
  85.         vec[i] = rand() % 10;
  86.     }
  87.     return vec;
  88. }
  89.  
  90. int main() {
  91.     SimpleVector arr[10]{}; // результирующая выборка
  92.     int index = 0;
  93.     for (int i = 0; i < 10; i++) {
  94.         cout << endl << endl;
  95.         SimpleVector vec;
  96.         vec = VectorFactory(1000000, i); // считываем, парсим откуда-то большой объем информации
  97.         vec.print(); // как-то его обрабатываем
  98.         // здесь могут быть какие-то еще функции для обработки
  99.         if (vec[0] % 2 == 0) { // если в итоге он удовлетворяет определенным условиям
  100.             arr[index] = move(vec); // записываем его в результирующую выборку
  101.             index++;
  102.         }
  103.     }
  104.     cout << endl << endl;
  105.     for (int i = 0; i < index; i++) { // выводим результат
  106.         arr[i].print();
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement