如何打印std::vector
?例如,如果我构造一个std::vector<int>(6, 1)
,我可以在C ++中运行它来获取{1 1 1 1 1 1}
之类的输出吗?它必须是通用的,因为大小和值可能会发生变化,因此std::vector<int>(4, 0)
将为{0 0 0 0}
。
答案 0 :(得分: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;
}
然后您可以使用正常的operator<<
语法输出您的向量:
std::cout<<yourVector;
您可以在行动here中看到这一点。
但是对于更灵活的解决方案,请查看question linked above。
编辑:如果你不想要两个空格(在开头和结尾):
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;
}