Cell
たとえば、次の関数に従って並べ替えたいclass がある場合(ここでx
はアクセサーを持つメンバー変数):y
int
bool sortByCoordinates(const Cell& c1, const Cell& c2) {
return c1.getX() < c2.getX() || (c1.getX() == c2.getX() && c1.getY() < c2.getY());
}
次のような関数で使用できるように、この関数を配置するのに最適な場所はどこstd::sort
ですか?
Cell
例では、必要な場所の上にメソッドがソース ファイルに浮かんでいるだけですが、実際にはクラスに関連付けたままにしたいと考えています。をオーバーライドできることはわかっていますが、operator<
ソートしたい他のソート方法があるかもしれませんCell
。とにかく、コードを明確にするために演算子をオーバーライドすることはあまり好きではありません。
現時点ではstatic
、ファイルのメソッドとして持っているCell.h
ので、次のようにソートするときに呼び出すことができます。
std::sort(cells.begin(), cells.end(), Cell::sortByCoordinates);
これは、複数の (または単一の) カスタム ソート関数のベスト プラクティスであり、ヘッダー ファイルはそれらの適切な場所ですか? そうでない場合、何ですか?