我有一个简单的数据结构,一个由k
和l
索引的三角矩阵,其中l
从1
到N
和{{1}从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()
成员函数的优点和缺点是什么,而不是使它们成为非成员函数(在非全局命名空间中)?