Ну, это потому, что нет operator<<
для std::vector<int>
, что делает его одним из более редкие виды компиляции C++, которые достаточно понятны и кратки. Точно так же, как вы написали свой собственный вывод для std::map
с использованием итератора, вам нужно будет сделать что-то подобное для std::vector
.
Одна из причин, почему стандарт не делает это для нас является беспредельным многообразием форматов, что люди могут ожидать выхода появиться. Например, если вы хотите, чтобы данные, окруженный (
и )
и каждый из двух элементов разделенном ,
и пространством, проще спросить вас, как пользователь реализовать это в нескольких строках, чем создать алгоритм, который позволяет это, но также печатать каждый элемент на отдельной строке с выравниванием в десятичной точке и с отступом для рекурсивная печать векторов векторов, которые кто-то может захотеть.
По этой же причине рекомендуется форматировать вектор в том месте, где оно вам нужно, а не на самом деле, и operator<<
. Если вы собираетесь использовать один и тот же механизм печати для одного и того же вектора в нескольких точках вашей программы и хотите иметь возможность писать его красиво, как std::cout << vector << '\n'
, лучший способ - создать класс, публично распространяющий std::vector<int>
, как в
class printable_vector : public std::vector<int> {
using std::vector<int>::vector; // inherit constructors
// (all other public member functions are inherited automatically)
friend std::ostream& operator<< (std::ostream& os, const printable_vector& vector) {
// do the actual printing to os...
return os;
}
};
Таким образом, вы можете управлять printable_vector
в любом случае вы могли нормально std::vector<int>
, но он также предлагает функциональные возможности вывода.
Как можно напечатать 'std :: vector'? Вы не можете, если вы не определяете, как это должно быть напечатано, предоставляя перегруз для 'operator <<' –
user463035818
. Вам нужно будет перебирать «std :: vector», либо делая это на месте, либо перегружая 'operator <<' для этого типа (что я не рекомендую.) –
Tobias
Черт, я новичок, мне действительно не нужно, чтобы каждый комментатор на этом форуме занимал нижестоящую позицию, когда они находили ответ очевидно –