#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;

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

																	#endif
