Advertisement
Guest User

Untitled

a guest
Jun 29th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. template <typename T>
  4. class Vector
  5. {
  6. private:
  7. size_t dimensions;
  8. T* data;
  9. public:
  10. Vector<T>(size_t dimensions) : dimensions(dimensions), data(new T[dimensions]())
  11. {
  12.  
  13. }
  14. Vector<T>(const Vector<T> & ob) : dimensions(ob.size()), data(new T[ob.size()])
  15. {
  16. for (size_t i = 0; i < ob.size(); i++)
  17. {
  18. data[i] = ob[i];
  19. }
  20. }
  21. virtual ~Vector<T>()
  22. {
  23. if (data) delete data;
  24. }
  25.  
  26. size_t size() const
  27. {
  28. return dimensions;
  29. }
  30.  
  31. T & at(size_t index) {
  32. return data[index];
  33. }
  34.  
  35. T at(size_t index) const {
  36. return data[index];
  37. }
  38. T & operator[](size_t index)
  39. {
  40. return data[index];
  41. }
  42. T operator[](size_t index) const
  43. {
  44. return data[index];
  45. }
  46. Vector<T> & operator=(const Vector<T> & ob)
  47. {
  48. delete data;
  49. dimensions = ob.size();
  50. data = new T[dimensions];
  51. for (size_t i = 0; i < ob.size(); i++)
  52. {
  53. data[i] = ob[i];
  54. }
  55. return *this;
  56. }
  57. };
  58. template<typename T>
  59. Vector<T> operator+(const Vector<T>& a, const Vector<T>& b)
  60. {
  61. Vector<T> c(a.size());
  62. for (size_t i = 0; i < a.size(); i++) {
  63. c[i] = a[i] + b[i];
  64. }
  65. return c;
  66. }
  67. template<typename T>
  68. Vector<T> operator-(const Vector<T>& a, const Vector<T>& b)
  69. {
  70. Vector<T> c(a.size());
  71. for (size_t i = 0; i < a.size(); i++) {
  72. c[i] = a[i] - b[i];
  73. }
  74. return c;
  75. }
  76. template<typename T>
  77. bool operator==(const Vector<T>& a, const Vector<T>& b)
  78. {
  79. if (&a == &b) return true;
  80. if (a.size() != b.size())
  81. return false;
  82. for (size_t i = 0; i < a.size(); i++)
  83. {
  84. if (a[i] != b[i]) return false;
  85. }
  86. return true;
  87. }
  88. template<typename T>
  89. bool operator!=(const Vector<T>& a, const Vector<T>& b) {
  90. if (&a != &b) return true;
  91. if (a.size() == b.size())
  92. return false;
  93. for (size_t i = 0; i < a.size(); i++) {
  94. if (a[i] == b[i]) return false;
  95. }
  96. return true;
  97. }
  98. template<typename T>
  99. ostream & operator<<(ostream &os, const Vector<T>& ob)
  100. {
  101. for (size_t i = 0; i < ob.size(); i++)
  102. os << ob[i] << " ";
  103. return os;
  104. }
  105.  
  106.  
  107. int main()
  108. {
  109. typedef int T;
  110. const size_t d = 10;
  111. Vector<T> v1(d);
  112. for (size_t i = 0; i < d; i++)
  113. {
  114. v1[i] = (T)i;
  115. }
  116. cout << "Wektor v1: " << v1 << endl;
  117. Vector<T> v2 = v1 + v1;
  118. cout << "Wektor v2: " << v2 << endl;
  119. cout << "v1 == v1: " << (v1 == v1 ? "TAK" : "NIE") << endl;
  120. cout << "v1 != v1: " << (v1 != v1 ? "TAK" : "NIE") << endl;
  121. cout << "v1 == v2: " << (v1 == v2 ? "TAK" : "NIE") << endl;
  122. cout << "v1 != v2: " << (v1 != v2 ? "TAK" : "NIE") << endl;
  123. Vector<T> v3(5);
  124. cout << "Wektor v3: " << v3 << endl;
  125. cout << "v1 == v3: " << (v1 == v3 ? "TAK" : "NIE") << endl;
  126. v3 = v1;
  127. cout << "Wektor v3: " << v3 << endl;
  128. cout << "v1 == v3: " << (v1 == v3 ? "TAK" : "NIE") << endl;
  129. getchar();
  130. system("pause");
  131. return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement