#include <../inc/my_structures.h> #include <../inc/my_util.h> ostream& operator<<(ostream& out, Matrix& mat) { for (auto& row: mat) { for (auto& weight: row) { out << weight; out << ", "; } out << endl; } return out; } ostream& operator<<(ostream& out, Graph& list) { int i = 0; for (auto& vertex: list) { out << "n: " << i + 1 << " => "; string s; for (auto& edge: vertex.neighbours) { out << "[" << edge.to + 1 << ", " << edge.cost << "], "; } out << endl; } return out; } ostream& operator<<(ostream& out, vector>& vec) { int i = 0; for (auto& vertex: vec) { out << ++i << ": "; for (auto& edge: vertex) { switch(edge) { case eStatus::absent: out << "A"; break; case eStatus::backward: out << "B"; break; case eStatus::cross: out << "C"; break; case eStatus::forward: out << "F"; break; default: out << "T"; } out << ", "; } out << endl; } return out; } istream& operator>>(istream& in, Matrix& mat) { string input_str; vector weigth_list; int row = 0, dim = 0; do { getline(in, input_str); weigth_list = split(input_str); if (dim == 0) { dim = weigth_list.size(); mat.resize(dim, vector(dim)); } for (int col = 0; col < dim; col++) { mat[row][col] = atoi(&weigth_list[col][0]); } row++; } while (row < dim); return in; } Color operator++(Color& obj) { // ++x obj = static_cast((obj + 1)); return obj; } Color operator++(Color& obj, int) { // x++ Color result = obj; ++obj; return result; }