我怎样才能漂亮地打印std::vector
?例如,如果我构造一个std::vector<int>(6, 1)
,我可以通过什么来运行它以获得类似的输出{1 1 1 1 1 1}
在 C++ 中?它需要是通用的,因为大小和值可能会发生变化,所以std::vector<int>(4, 0)
将会{0 0 0 0}
.
#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<<
syntax:
std::cout<<yourVector;
你可以看到它的实际效果here http://ideone.com/IOCsKq.
但对于更灵活的解决方案,请查看上面链接的问题 https://stackoverflow.com/questions/4850473/pretty-print-c-stl-containers.
编辑:如果您不需要两个空格(在开头和结尾):
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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)