在 C++ 中漂亮打印 std::vector [重复]

2024-04-01

我怎样才能漂亮地打印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(使用前将#替换为@)

在 C++ 中漂亮打印 std::vector [重复] 的相关文章

随机推荐