#ifndef ROW_H
#define ROW_H

#include <cstdint>
#include <iostream>
template <typename T>
class Row{

private:
	T* p;
	uint32_t n;

public:
//kataskevastis
Row(T* stoixeia, uint32_t size);
//destructor
~Row();
//copy constructor
Row(const Row& neostixio);
//deep copy
Row& operator=(const Row& neostixio);

T& operator[](uint32_t index);

T& at(uint32_t index);
uint32_t size() const { return n; }
template<typename U>
    friend std::ostream& operator<<(std::ostream& os, const Row<U>& r);
template<typename U>
    friend std::istream& operator>>(std::istream& is, Row<U>& r);


};
#endif
