在c++中打印std::vector

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

本文关键字:vector std 打印 c++      更新时间:2023-10-16

如何美观地打印std::vector ?例如,如果我构造一个std::vector<int>(6, 1),我怎么运行它才能在c++中得到像{1 1 1 1 1 1}这样的输出?它需要是通用的,因为大小和值可能会改变,所以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<<语法输出你的向量:

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;
}
相关文章: