k
とl
でインデックス付けされた三角行列の単純なデータ構造l
があります。1
N
k
1
l
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
非メンバー関数にする代わりに (非グローバル名前空間で) メンバー関数にすることの長所と短所は何ですか?