Ввод/вывод массива в одну строку
Изначально задание звучит так: Написать класс булева матрица, реализованная через неупорядоченный список пар (строка, столбец) для ненулевых элементов. Реализовать функции и операции: конъюнкция, дизъюнкция, умножение, итерация, инверсия, транспонирование, доступ к элементам, сравнения, выделение подматрицы. Реализовать итератор для доступа к элементам. Ввод-вывод реализовать в виде [элементы через пробел; элементы через пробел;...]
class Matrix
{
private:
int** array;
int size;
public:
Matrix()
{
size = 0;
array = nullptr;
}
Matrix(const Matrix& data)
{
size = data.size;
array = new int* [size];
for (int i = 0; i < size; i++)
{
array[i] = new int[2];
}
for (int i = 0; i < size; i++)
{
for (int j = 0; j < 2; j++)
{
array[i][j] = data.array[i][j];
}
}
}
Matrix operator=(const Matrix& data)
{
for (size_t i = 0; i < size; i++)
delete[] array[i];
delete[] array;
size = data.size;
array = new int* [size];
for (int i = 0; i < size; i++)
{
array[i] = new int[2];
}
for (int i = 0; i < size; i++)
{
for (int j = 0; j < 2; j++)
{
array[i][j] = data.array[i][j];
}
}
return *this;
}
friend std::ostream& operator<<(std::ostream& out, const Matrix& data)
{
for (size_t i = 0; i < data.size; i++)
{
for (size_t j = 0; j < 2; j++)
{
out << data.array[i][j] << " ";
}
out << std::endl;
}
return out;
}
friend std::istream& operator >>(std::istream& in, Matrix& data)
{
for (size_t i = 0; i < data.size; i++)
{
for (size_t j = 0; j < 2; j++)
{
in >> data.array[i][j];
}
}
return in;
}
};
Никак не получается сделать правильный ввод/вывод. Другие библиотеки, кроме iostream использовать нельзя. Буду благодарен за помощь.
UPD: вывод +- сделал, но надо бы убрать пробелы после ;
friend std::ostream& operator<<(std::ostream& out, const Matrix& data)
{
for (size_t i = 0; i < data.size; i++)
{
int c = 1;
for (size_t j = 0; j < 2; j++)
{
out << data.array[i][j];
c++;
if (c % 3 == 0)
{
std::cout << ";";
}
std::cout << " ";
}
}
return out;
}