Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- template <typename T>
- class Vector
- {
- private:
- size_t dimensions;
- T* data;
- public:
- Vector<T>(size_t dimensions) : dimensions(dimensions), data(new T[dimensions]())
- {
- }
- Vector<T>(const Vector<T> & ob) : dimensions(ob.size()), data(new T[ob.size()])
- {
- for (size_t i = 0; i < ob.size(); i++)
- {
- data[i] = ob[i];
- }
- }
- virtual ~Vector<T>()
- {
- if (data) delete data;
- }
- size_t size() const
- {
- return dimensions;
- }
- T & at(size_t index) {
- return data[index];
- }
- T at(size_t index) const {
- return data[index];
- }
- T & operator[](size_t index)
- {
- return data[index];
- }
- T operator[](size_t index) const
- {
- return data[index];
- }
- Vector<T> & operator=(const Vector<T> & ob)
- {
- delete data;
- dimensions = ob.size();
- data = new T[dimensions];
- for (size_t i = 0; i < ob.size(); i++)
- {
- data[i] = ob[i];
- }
- return *this;
- }
- };
- template<typename T>
- Vector<T> operator+(const Vector<T>& a, const Vector<T>& b)
- {
- Vector<T> c(a.size());
- for (size_t i = 0; i < a.size(); i++) {
- c[i] = a[i] + b[i];
- }
- return c;
- }
- template<typename T>
- Vector<T> operator-(const Vector<T>& a, const Vector<T>& b)
- {
- Vector<T> c(a.size());
- for (size_t i = 0; i < a.size(); i++) {
- c[i] = a[i] - b[i];
- }
- return c;
- }
- template<typename T>
- bool operator==(const Vector<T>& a, const Vector<T>& b)
- {
- if (&a == &b) return true;
- if (a.size() != b.size())
- return false;
- for (size_t i = 0; i < a.size(); i++)
- {
- if (a[i] != b[i]) return false;
- }
- return true;
- }
- template<typename T>
- bool operator!=(const Vector<T>& a, const Vector<T>& b) {
- if (&a != &b) return true;
- if (a.size() == b.size())
- return false;
- for (size_t i = 0; i < a.size(); i++) {
- if (a[i] == b[i]) return false;
- }
- return true;
- }
- template<typename T>
- ostream & operator<<(ostream &os, const Vector<T>& ob)
- {
- for (size_t i = 0; i < ob.size(); i++)
- os << ob[i] << " ";
- return os;
- }
- int main()
- {
- typedef int T;
- const size_t d = 10;
- Vector<T> v1(d);
- for (size_t i = 0; i < d; i++)
- {
- v1[i] = (T)i;
- }
- cout << "Wektor v1: " << v1 << endl;
- Vector<T> v2 = v1 + v1;
- cout << "Wektor v2: " << v2 << endl;
- cout << "v1 == v1: " << (v1 == v1 ? "TAK" : "NIE") << endl;
- cout << "v1 != v1: " << (v1 != v1 ? "TAK" : "NIE") << endl;
- cout << "v1 == v2: " << (v1 == v2 ? "TAK" : "NIE") << endl;
- cout << "v1 != v2: " << (v1 != v2 ? "TAK" : "NIE") << endl;
- Vector<T> v3(5);
- cout << "Wektor v3: " << v3 << endl;
- cout << "v1 == v3: " << (v1 == v3 ? "TAK" : "NIE") << endl;
- v3 = v1;
- cout << "Wektor v3: " << v3 << endl;
- cout << "v1 == v3: " << (v1 == v3 ? "TAK" : "NIE") << endl;
- getchar();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement