#ifndef TENSOR2D_H
#define TENSOR2D_H
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 get(int row, int col) const;
		int rows() const;
		int cols() const;
		std::pair<int,int> shape() const;
		T& operator()(int row, int col);
		const T& operator(int row, col);
		//A[i][j]
		T *operator[](int row);
		const T*operator[](int row);
		void print(void);
};

#endif
