作为成员或非成员函数的算法

Algorithms as member or non-member functions?

本文关键字:成员 算法 函数      更新时间:2023-10-16

我有一个简单的数据结构,一个由kl索引的三角矩阵,其中l1运行到Nk1运行到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];
    }
};

我也有几种算法在这种数据结构上运行。他们都只能通过operator()访问triangular_matrix

使这些算法成为triangular_matrix的成员函数而不是使它们成为非成员函数(在非全局命名空间中)的优缺点是什么?

在C++中,通常将不必成员函数的所有内容放在非成员函数中。赫伯·萨特(Herb Sutter)不久前写了一篇关于它的好文章。