使用比较器和向量合并排序作为参数

时间:2015-03-18 19:37:56

标签: c++ sorting mergesort

我遇到的问题涉及编写一个函数来使用合并排序来对矢量进行排序,我也需要使用仿函数。如何将比较器/仿函数用作合并排序函数的参数来对矢量进行排序?

2 个答案:

答案 0 :(得分:0)

您可以像这样定义一个比较运算符

struct MyLessThanFunctor
{
    bool operator() (int i,int j)
    {
    return (i<j);
    }
};

然后,实例化并使用它

MyLessThanFunctor comparator;
sort(elements, comparator);

答案 1 :(得分:0)

!!!警告std :: sort不应该是一个稳定的排序算法。 使用std :: stable_sort,这大部分时间都是作为合并排序实现的。

struct comparator
{
    bool operator () (int i1, int i2) const { return i1 < i2; }
};

int main()
{
    vector<int> v = {0,13,76,46,53,22,4,68,68,94,38,52,83,3,5,53,67 };
    std::stable_sort (v.begin(), v.end(), comparator() );
    for (auto e : v) cout << e << " " ;
}