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