有没有人知道使用现有整数排序(例如STL排序)的有效算法来排序整数元组而不修改现有的整数排序。例如。我想排序4个整数元组的列表。元组的形式为:<int,int,int, int>
。再假设整数排序只能处理单个整数。
答案 0 :(得分:6)
您可以使用现有的C ++排序例程“排序”对您想要的任何内容进行排序,只需定义您自己的比较函数,例如在您的情况下
sort(mytuplearray, mytuplearray + N, mycomp)
mycomp是
bool mycomp(tuple& a, tuple& b)
{
//compare however you like
}
答案 1 :(得分:2)
如果要使用标量比较器创建字典元组比较器,只需比较不相等的最后一对组件。像这样:
template<typename T>
class LexicographicCompare
{
private:
T Compare;
public:
LexicographicCompare(T Compare) : Compare(Compare)
{
}
bool operator()
( const tuple<int, int, int> & a
, const tuple<int, int, int> & b
) const
{
if (a[0] != b[0])
return Compare(a[0], b[0]);
if (a[1] != b[1])
return Compare(a[1], b[1]);
return Compare(a[2], b[2]);
}
};
sort(tuples.begin(), tuples.end(), LexicographicCompare(IntCompare()));