#ifndef TENSOR2D_H
#define TENSOR2D_H

#include <iostream>
#include <utility>


template <typename T>

class Tensor2D {
private : 
	int r;
	int c;
	T **data;

public:
	//constractor
	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;
	//A[i][j]
	T *operator[](int row);
	const T*operator[](int row);
	void print(void);
	



};

#endif
