ボックスを表すオブジェクトがあるとします。複数の方法で比較できるオブジェクトをC++で設計する
class Box {
public:
int length;
int width;
int height;
Box(int l, int w, int h);
~Box();
int area(const int l, const int w) const;
int volume(const int l, const int w, const int h) const;
};
は、今、私たちはn
ボックスが含まれているstd::list<Box>
を持って、別のファイルでは、別のクラスに言うことができます。私たちは、これらのボックスからさまざまな方法でプリントアウトしたいと考えています。
- まず、長さの順にサイズを大きくして印刷したいと考えています。
- 次に、幅が増える順に印刷します。
- 私たちは今は身長について気にしませんが、後でそれをするつもりです。
std::list
には、比較機能を引数とするメンバー関数sort()
があります。上記のBoxクラスを変更して、異なる比較関数を使用してsort()
をリストに追加するにはどうすればよいですか?
具体的には、ボックスクラス内で3つの異なる関数を定義し、単にそれらをlist.sort()
に渡すことはできますか?比較関数をクラス外でグローバルに定義する方がよいでしょうか?直感的にクラスにそれらを結び付ける方が良いようですが、なぜそうではないでしょうか?全体的に、これを達成するための「最良の」方法は何ですか?
:
すると、次のように
sort()
メソッドを呼び出しますリスト/ソート/ – gbulmer特に、頻繁に使用する場合は、各注文ごとに別々のリストを保管することが最適かもしれません。 –