如何使用现有的整数排序来对整数元组进行排序?

时间:2011-08-25 03:51:04

标签: c++ algorithm sorting quicksort

有没有人知道使用现有整数排序(例如STL排序)的有效算法来排序整数元组而不修改现有的整数排序。例如。我想排序4个整数元组的列表。元组的形式为:<int,int,int, int>。再假设整数排序只能处理单个整数。

2 个答案:

答案 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()));