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