#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
