Pretty-print un std :: vector en C ++

Comment puis-je imprimer un std::vector ? Par exemple, si je construis un std::vector(6, 1) , que puis-je exécuter pour obtenir un résultat tel que {1 1 1 1 1 1} en C ++? Il doit être générique car la taille et la valeur peuvent changer, donc std::vector(4, 0) serait {0 0 0 0} .

 #include  #include  #include  template std::ostream & operator<<(std::ostream & os, std::vector vec) { os<<"{ "; std::copy(vec.begin(), vec.end(), std::ostream_iterator(os, " ")); os<<"}"; return os; } 

alors vous pouvez afficher vos vecteurs avec la syntaxe d' operator<< normal operator<< :

 std::cout< 

vous pouvez voir cela en action ici .

Mais pour des solutions plus flexibles, jetez un œil à la question ci-dessus .


Edit: si vous ne voulez pas les deux espaces (au début et à la fin):

 template std::ostream & operator<<(std::ostream & os, std::vector vec) { os<<"{"; if(vec.size()!=0) { std::copy(vec.begin(), vec.end()-1, std::ostream_iterator(os, " ")); os<