Open5

C++用のデバッグコードetc

log5log5

デバッグ用ライブラリなどは探せばあるだろうけど、せっかくなので学習がてらに自作してみる。

  • vectorの中身を出力する (NSArrayのtoStringレベルで十分なのでほしい)

思いつき次第追加
...と思ったけどこれ以外ないのでは...
コンテスト中に欲しくなったのもこれだけだし...

log5log5

めっちゃシンプルだけどvectorの中身を出力するやつ

template<typename T>
void dbgp_vector(const string& label, vector<T> vec) {
    cout << "DEBUG_VECTOR " << label << ": [";
    for (int i = 0; i < vec.size(); ++i) {
        if (i != 0) cout << ", ";
        cout << vec.at(i);
    }
    cout << "]" << endl;
}
log5log5

toString みたいにしたいときはこうするのが一般?

template<typename T>
std::ostream & operator<<(std::ostream & Str, vector<T> const & vec) {
    Str << "[";
    for (int i = 0; i < vec.size(); ++i) {
        if (i != 0) cout << ", ";
        Str << vec.at(i);
    }
    Str << "]";
    return Str;
}
log5log5

演算子オーバーロードをしておくと vector<vector<...>> もちゃんと出力してくれるのがうれしい