#ifndef TENSOR2D_HPP
#define TENSOR2D_HPP

#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,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;
		//A[i][j]
		T *operator[](int row);
		T *operator[](int row) const;
		void print(void);
};
#endif
