C++ テンプレートを使用してベクトルをソートする方法
こんにちはみんな、私の質問を見てくれてありがとう。
このようになる Templates.h ファイルを取得しました。
/* Template Less Than */
template<typename T>
bool lessThan(T a,T b)
{
return a<b;
}
/* Template greater Than */
template<typename T>
bool greaterThan(T a,T b)
{
return a>b;
}
/* Template Equals */
template<typename T>
bool equals(T a,T b)
{
return a==b;
}
それから私はこのクラスを得ました
Map2D
Map2Dについて..
class Map2D
{
protected:
int x;
int y;
public:
Map2D();
Map2D(int,int);
int getX();
int getY();
};
私のmain.cppで、Map2Dのベクトルクラスを取得しました
vector<Map2D> map2d;
だから今、私はそれをX昇順でソートする必要があります..テンプレートファイルを利用してX昇順のベクトルをソートするにはどうすればよいですか.後でDESCENDINGのために別のオーバーロードが必要になると考えてください..
通常、私は使用します
sort(map2d.begin(),map2d.end(),sortByX);
sortByX は、 it () 演算子によるオーバーロードを持つ構造体になります。
しかし、問題は、次よりも小さいテンプレートと大きいテンプレートを取得したためです。それを使用して X を昇順で並べ替え、別の X を Templates.H のテンプレート ジェネリック関数を使用して降順で並べ替えるにはどうすればよいでしょうか。
アップデート:
クラス Map2D 演算子 > 、 < および == をオーバーロードする必要があると思います
しかし、私の質問は、lesserThan、greaterThan、equals などの MyTemplates.h 関数を使用してオーバーロードする方法です。
ありがとう。