Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <ctime>
- #include <algorithm>
- #include <string>
- using namespace std;
- class Iterator;
- class Vector
- {
- int *arr;
- int size;
- public:
- friend Iterator;
- Iterator begin();
- Iterator end();
- Vector() { arr = NULL; size = 0; }
- Vector(int s = 0)
- {
- if (s > 0)
- {
- size = s;
- arr = new int[s];
- for (int i = 0; i < s; i++)
- arr[i] = 0;
- }
- }
- ~Vector()
- {
- if (arr)
- delete[]arr;
- }
- Vector(const Vector & B)
- {
- if (B.size > 0)
- {
- size = B.size;
- arr = new int[size];
- for (int i = 0; i < size; i++)
- arr[i] = B.arr[i];
- }
- else
- {
- size = 0;
- arr = 0;
- }
- }
- void PrintV() { for (int i = 0; i < size; i++)printf_s("%d ", arr[i]); printf_s("\n"); }
- void ScanV()
- {
- for (int i = 0; i < size; i++)
- cin >> arr[i];
- }
- int Get_size()
- {
- return size;
- }
- int Get_el(int i)
- {
- return arr[i];
- }
- Vector operator *(const Vector &B)
- {
- Vector C(size);
- if (size == B.size)
- {
- for (int i = 0; i < size; i++)
- C.arr[i] = arr[i] * B.arr[i];
- return C;
- }
- else
- printf_s("\nРазмерности векторов не совпадают\n");
- return *this;
- }
- Vector operator *(int d)
- {
- for (int i = 0; i < size; i++)
- arr[i] = arr[i] * d;
- return *this;
- }
- Vector operator +(const Vector&B)
- {
- Vector C(size);
- if (size == B.size)
- {
- for (int i = 0; i < size; i++)
- C.arr[i] = arr[i] + B.arr[i];
- return C;
- }
- else
- printf_s("\nРазмерности векторов не совпадают\n");
- return *this;
- }
- Vector operator +(int d)
- {
- for (int i = 0; i < size; i++)
- arr[i] = arr[i] + d;
- return *this;
- }
- Vector operator -(const Vector&B)
- {
- Vector C(size);
- if (size == B.size)
- {
- for (int i = 0; i < size; i++)
- C.arr[i] = arr[i] - B.arr[i];
- return C;
- }
- else
- printf_s("\nРазмерности векторов не совпадают\n");
- return *this;
- }
- Vector operator -(int d)
- {
- for (int i = 0; i < size; i++)
- arr[i] = arr[i] - d;
- return *this;
- }
- bool operator >(const Vector &B)
- {
- int s1 = 0, s2 = 0;
- for (int i = 0; i < size; i++)
- {
- s1 = s1 + arr[i] * arr[i];
- s2 = s2 + B.arr[i] * B.arr[i];
- }
- if (s1 > s2)
- return true;
- return false;
- }
- bool operator <(const Vector &B)
- {
- int s1 = 0, s2 = 0;
- for (int i = 0; i < size; i++)
- {
- s1 = s1 + arr[i] * arr[i];
- s2 = s2 + B.arr[i] * B.arr[i];
- }
- if (s1 <s2)
- return true;
- return false;
- }
- Vector operator =(const Vector &B)
- {
- if (arr)
- delete[] arr;
- size = B.size;
- arr = new int[size];
- for (int i = 0; i < size; i++)
- arr[i] = B.arr[i];
- return *this;
- }
- bool operator ==(const Vector &B)
- {
- for (int i = 0; i < size; i++)
- if (arr[i] != B.arr[i])
- return false;
- return true;
- }
- bool operator !=(const Vector &B)
- {
- for (int i = 0; i < size; i++)
- if (arr[i] != B.arr[i])
- return true;
- return false;
- }
- };
- class Iterator
- {
- public:
- int *m;
- public:
- friend Vector;
- Iterator(int *a = 0) :m(a) {}
- bool operator ==(const Iterator & it)
- {
- return (m == it.m);
- }
- bool operator !=(const Iterator & it)
- {
- return (m != it.m);
- }
- Iterator operator ++();
- Iterator operator --();
- };
- Iterator Vector::begin()
- {
- Iterator it(arr);
- return it;
- }
- Iterator Vector::end()
- {
- Iterator it(arr);
- for (size_t u = 0u; u < size; ++u)
- {
- ++it;
- }
- return it;
- }
- Iterator Iterator::operator ++()
- {
- return ++m;
- }
- Iterator Iterator::operator --()
- {
- return --m;
- }
- int main()
- {
- setlocale(LC_ALL, "Rus");
- Vector A(4);
- A.ScanV();
- Vector B(A);
- A.PrintV();
- Iterator it(A.begin());
- //Iterator iter = A.begin();
- cout << A.begin().m << " " << A.end().m << endl;
- for(Iterator iter = A.begin(); iter != A.end(); ++iter)
- {
- cout << *iter.m << endl;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement