0

klでインデックス付けされた三角行列の単純なデータ構造lがあります。1Nk1l

template<int N> class triangular_matrix {
    std::vector<int> elem;
public:
    int& operator()(int k, int l) {
        return elem[(N * (N + 1) - l * (l + 1)) / 2 + k - 1];
    }
};

また、このデータ構造で動作するいくつかのアルゴリズムもあります。それらはすべてtriangular_matrix経由でのみアクセスしますoperator()

これらのアルゴリズムをtriangular_matrix非メンバー関数にする代わりに (非グローバル名前空間で) メンバー関数にすることの長所と短所は何ですか?

4

1 に答える 1

1

C++ では、メンバー関数である必要のないものはすべて非メンバー関数に入れるのが一般的です。ハーブ・サッターは、しばらく前にそれについて素晴らしい記事を書きました.

于 2012-08-08T21:43:02.420 に答える