c ++如何使用ElementComparator类在JUCE中对数组进行排序

时间:2013-04-05 17:50:41

标签: c++ juce

我有一个数组,我想使用在JUCE库中定义的ArrayName.sort(ElementComparator& comparator)对此数组进行排序,这里是sort函数的链接:http://www.rawmaterialsoftware.com/juce/api/classArray.html#a13366b4435364fcd0d304cdcaebd726a

我无法理解如何将该比较器传递给我的sort函数。

或者,如果有人能给我一个更好的方法来按升序和降序对字符串数组进行排序。

非常感谢

2 个答案:

答案 0 :(得分:2)

这很简单,文档中对此进行了描述:

  

这将使用比较器对象按顺序对元素进行排序。传递的对象必须具有以下形式的方法:

int compareElements (ElementType first, ElementType second);
  

..并且此方法必须返回:

     

值<&lt;如果第一个在第二个之前,则为0      如果两个对象相等,则值为0      值>&gt;如果第二个在第一个

之前,则为0

因此,要使用自己的比较器对Array进行排序,您必须定义一个实现上述方法的类,例如:

class MyArraySorter
{
public:
    static int compareElements(ElementType a, ElementType b)
    {
        if (a < b)
            return -1;
        else if (a > b)
            return 1;
        else // if a == b
            return 0;
    }
};

当然,ElementType必须是数组所持有的元素类型,并且必须相应地调整compareElements的实现。

然后将其传递给数组的排序方法:

MyArraySorter sorter;
myarr.sort(sorter);

答案 1 :(得分:0)

  

或者,如果有人能给我一个更好的方法来按升序和降序对字符串数组进行排序。

一个例子可能是:

#include <string>
#include <vector>
#include <algorithm>

std::vector<std::string> vec;

/* populate your vector */

std::sort(vec.begin(), vec.end());

您可以尝试使用某些标准库来更轻松地完成字符串的存储和排序。