关于stdvector:在C ++中漂亮打印std :: vector

Pretty-print a std::vector in C++

本问题已经有最佳答案,请猛点这里访问。

我怎样才能漂亮地打印一个std::vector?例如,如果我构造一个EDCOX1,1,那么,在C++中,我可以运行它以获得像EDCOX1 2?它必须是通用的,因为大小和值可能会改变,所以std::vector(4, 0)将是{0 0 0 0}


1
2
3
4
5
6
7
8
9
10
11
12
#include <vector>
#include
#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<<语法输出向量:

1
std::cout<<yourVector;

你可以在这里看到这一点。

但对于更灵活的解决方案,请看上面链接的问题。

编辑:如果不需要这两个空格(开头和结尾):

1
2
3
4
5
6
7
8
9
10
11
12
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;
}