我怎样才能漂亮地打印一个std::vector
?例如,如果我构造 a std::vector<int>(6, 1)
,我可以通过什么运行它来获得像{1 1 1 1 1 1}
C++ 中的输出?它需要是通用的,因为大小和值可能会发生变化std::vector<int>(4, 0)
,{0 0 0 0}
.
问问题
3879 次
1 回答
14
#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;
}
operator<<
然后你可以用正常的语法输出你的向量:
std::cout<<yourVector;
你可以在这里看到这个。
但对于更灵活的解决方案,请查看上面链接的问题。
编辑:如果你不想要两个空格(在开头和结尾):
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;
}
于 2013-03-15T14:51:06.000 回答