std::vector<std::pair<Pos, int>> v;
// sort and other stuff...
std::ostream_iterator<std::vector<std::pair<Pos, int>>> out_it(std::cout, "\n");
std::copy(v.begin(), v.end(), out_it); // error
В настоящее время изучает STL и пытается напечатать на консоли с помощью copy
. У меня есть operator<<
для отображения пар, должен ли я сделать один для отображения вектора? Или есть другой способ? Pos
- это только класс, который я определил, он имеет частную строку-член.C++ отображает вектор пар с использованием копии
C++ автоматически не понять, как взять произвольный класс и преобразовать его в строковое представление, которое можно сбрасывать на 'std :: cout'. Для этого вам нужно написать явный код. Обратите внимание, что это также относится к 'std :: pair', в дополнение к вашему собственному классу. –
@SamVarshavchik Вы имеете в виду, что мне нужно будет перегрузить 'operator <<' для отображения 'std :: vector'? У меня есть перегрузка 'operator <<' для отображения 'std :: pair' – user3221454
, почему параметр типа ostream_iterator - это вектор, а не тип члена вектора? Вы должны хранить несколько векторов для потока? и да, вам нужно определить поведение для типа, который вы хотите сериализовать. – Swift