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 Ascending 对其进行排序.. 我如何利用模板文件对其 X Ascending 的向量进行排序.. 考虑到我稍后需要重载另一个 DESCENDING..
通常我会使用
sort(map2d.begin(),map2d.end(),sortByX);
并且 sortByX 将是一个由 it () 运算符重载的结构。
但现在的问题是,因为我得到了一个小于和大于的模板。我如何利用它通过 Templates.H 的模板通用函数通过升序对 X 进行排序,然后通过降序对另一个 X 进行排序。
更新:
我想我需要重载类 Map2D 运算符 > , < 和 ==
但我的问题是如何在 MyTemplates.h 函数的帮助下重载它,例如 lesserThan 、greaterThan、equals
谢谢。