作为成员或非成员函数的算法
Algorithms as member or non-member functions?
我有一个简单的数据结构,一个由k
和l
索引的三角矩阵,其中l
从1
运行到N
,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];
}
};
我也有几种算法在这种数据结构上运行。他们都只能通过operator()
访问triangular_matrix
。
使这些算法成为triangular_matrix
的成员函数而不是使它们成为非成员函数(在非全局命名空间中)的优缺点是什么?
在C++中,通常将不必是成员函数的所有内容放在非成员函数中。赫伯·萨特(Herb Sutter)不久前写了一篇关于它的好文章。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 助记符和指向成员语法的指针
- 通过指针算法访问结构数据成员
- 如何处理算法中具有不同名称成员函数的类?
- 算法在容器中查找具有给定值的元素之一的成员
- 为什么指向非静态成员函数的指针不能用作标准库算法的一元谓词
- 如何为涉及对象成员、间接寻址和强制转换的排序算法实现lambda函数
- 如何使用"is_member_function_pointer"在算法中包含/排除成员函数调用
- 用于查找数组的独特成员的算法
- 作为成员或非成员函数的算法
- STL算法无法访问私有成员
- 如何从函数模板类成员内的转换算法参数指向一元运算符函数
- 成员函数的实现:排序算法
- C++对对象的向量进行迭代,并将STL算法应用于成员变量
- 对STL算法进行专门化,以便在可用时自动调用高效的容器成员函数
- 以指向成员的指针作为比较器/"key"的 STD 算法
- 将c++成员函数指针传递给STL算法