thespeedracer38

Scalar Vector Multiplication using class Template

Mar 25th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. template <class T, int s = 3>
  7. class Vector{
  8.     T *arr;
  9.     int size;
  10.     public:
  11.         Vector();
  12.         Vector(int);
  13.         Vector(const Vector<T, s>&);
  14.         ~Vector();
  15.         Vector<T, s> operator *(T);
  16.         // Produces ERROR
  17.         //friend Vector<T, s> operator *(T, const Vector<T ,s>&);
  18.         Vector<T, s>& operator =(const Vector<T,s>&);
  19.         void display();
  20.         void input();
  21. };
  22.  
  23. template <class T, int s>
  24. Vector<T, s>::Vector(){
  25.     size = s;
  26.     arr = new T[size];
  27. }
  28.  
  29. template <class T, int s>
  30. Vector<T, s>& Vector<T, s>::operator =(const Vector<T,s> &obj){
  31.     for(int i = 0; i < size; i++){
  32.         arr[i] = obj.arr[i];
  33.     }
  34.     return *this;
  35. }
  36.  
  37. template <class T, int s>
  38. Vector<T, s>::Vector(int size){
  39.     arr = new T[Vector<T>::size = size];
  40. }
  41.  
  42. template <class T, int s>
  43. Vector<T, s>::Vector(const Vector<T, s> &obj){
  44.     arr = new T[size = obj.size];
  45.     for(int i = 0; i < size; i++){
  46.         arr[i] = obj.arr[i];
  47.     }
  48. }
  49.  
  50. template <class T, int s>
  51. Vector<T, s>::~Vector(){
  52.     delete[] arr;
  53. }
  54.  
  55. template <class T, int s>
  56. void Vector<T, s>::display(){
  57.     for(int i = 0; i < size; i++){
  58.         cout << arr[i] << " ";
  59.     }
  60.     cout << endl;
  61. }
  62.  
  63. template <class T, int s>
  64. void Vector<T, s>::input(){
  65.     for(int i = 0; i < size; i++){
  66.         cout << "arr[" << i << "] = ";
  67.         cin >> arr[i];
  68.     }
  69. }
  70.  
  71. template <class T, int s>
  72. Vector<T, s> Vector<T, s>::operator *(T multiplier){
  73.     Vector<T> temp(size);
  74.     for(int i = 0; i < size; i++){
  75.         temp.arr[i] = multiplier * arr[i];
  76.     }
  77.     return temp;
  78. }
  79.  
  80. // Produces ERROR
  81. /*
  82. template <class T, int s>
  83. Vector<T, s> Vector<T, s>::operator *(T multiplier, const Vector<T, s> &obj){
  84.     Vector<T> temp(obj.size);
  85.     for(int i = 0; i < size; i++){
  86.         temp.arr[i] = multiplier * obj.arr[i];
  87.     }
  88.     return temp;
  89. }
  90. */
  91.  
  92. int main() {
  93.     int size;
  94.     cout << "Enter the length of the vector: ";
  95.     cin >> size;
  96.     Vector<int> obj(size);
  97.     cout << "Input values" << endl;
  98.     obj.input();
  99.     int multiplier;
  100.     cout << "Enter the multiplier: ";
  101.     cin >> multiplier;
  102.     cout << "Before multiplying" << endl;
  103.     obj.display();
  104.     obj = obj * multiplier;
  105.     cout << "After multiplying" << endl;
  106.     obj.display();
  107.     return 0;
  108. }
Add Comment
Please, Sign In to add comment