5

どうすればきれいに印刷できstd::vectorますか?たとえば、を作成した場合、C ++std::vector<int>(6, 1)のように出力を取得するために何を実行できますか?{1 1 1 1 1 1}サイズと値が変わる可能性があるため、一般的である必要があり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;

ここで実際の動作を確認できます。

しかし、より柔軟な解決策については、上記のリンク先の質問をご覧ください。


編集:2つのスペース(最初と最後)が必要ない場合:

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 に答える