5

我怎样才能漂亮地打印一个std::vector?例如,如果我构造 a std::vector<int>(6, 1),我可以通过什么运行它来获得像{1 1 1 1 1 1}C++ 中的输出?它需要是通用的,因为大小和值可能会发生变化std::vector<int>(4, 0){0 0 0 0}.

4

1 回答 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 回答