2013-04-05 51 views
0

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

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

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

非常感谢

+0

不确定JUCE,但你有没有考虑过使用字符串矢量,并使用标准的排序算法? – quandrei 2013-04-05 18:11:12

+0

如果您打算使用JUCE库,我会建议发布您尝试过的代码以及得到的错误,以获得进一步的帮助。 – quandrei 2013-04-05 18:32:43

回答

0

或者,如果任何人都可以给我一个更好的方式来排序字符串在升序和降序的阵列。

一个例子可能是:

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

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

/* populate your vector */ 

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

你可以使用一些标准库来完成存储和更容易字符串进行排序尝试。

2

这是很简单,并且它的文档中被描述:

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

int compareElements (ElementType first, ElementType second); 

..和此方法必须返回:

的< 0,如果所述第一值来了第二
值之前如果两个对象相等,则为0
如果第二个在第一个之前出现,则值为> 0的值

所以,排序与自己的比较器阵列,则必须定义一个实现上述方法的类,例如:

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); 
相关问题