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