我怎么漂亮打印std::vector
?例如,如果我构造一个std::vector<int>(6, 1)
,我可以运行它来获得像{1 1 1 1 1 1}
C++ 一样的输出吗?它必须是通用的,因为大小和值可能会改变,因此std::vector<int>(4, 0)
也是如此{0 0 0 0}
.
Mat*_*lia 11
#include <vector>
#include <algorithm>
#include <iterator>
template<typename T>
std::ostream & operator<<(std::ostream & os, std::vector<T> vec)
{
os<<"{ ";
std::copy(vec.begin(), vec.end(), std::ostream_iterator<T>(os, " "));
os<<"}";
return os;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以用普通operator<<
语法输出你的向量:
std::cout<<yourVector;
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到这个.
编辑:如果你不想要两个空格(在开头和结尾):
template<typename T>
std::ostream & operator<<(std::ostream & os, std::vector<T> vec)
{
os<<"{";
if(vec.size()!=0)
{
std::copy(vec.begin(), vec.end()-1, std::ostream_iterator<T>(os, " "));
os<<vec.back();
}
os<<"}";
return os;
}
Run Code Online (Sandbox Code Playgroud)