#ifndef TENSOR2D_H
#define TENSOR2D_H
#include <utility>
template<typename T>
class Tensor2D {
private: 
int r;
int c;
T **data;
public:
   Tensor2D(int rows, int cols);
   Tensor2D(const Tensor2D &other);
   Tensor2D operator=(const Tensor2D &other);
   ~Tensor2D();
   void set(int row, int col , const T& value);
   T get(int row, int col) const;
   int rows() const;
   int cols() const;
   std::pair<int,int> shape() const;
   T& operator()(int row, int col);
   T& operator() (int row,int col) const;

   T *operator[](int row);
   T*operator[](int row) const;
   void print(void);
   };
   #endif
