我有一个数组,我想使用 JUCE 库中定义的 ArrayName.sort(ElementComparator&comparator) 对这个数组进行排序,这里是排序函数的链接:http ://www.rawmaterialsoftware.com/juce/api/ classArray.html#a13366b4435364fcd0d304cdcaebd726a
我无法理解如何将该比较器传递给我的排序函数。
或者,如果有人可以给我一个更好的方法来按升序和降序对字符串数组进行排序。
非常感谢
我有一个数组,我想使用 JUCE 库中定义的 ArrayName.sort(ElementComparator&comparator) 对这个数组进行排序,这里是排序函数的链接:http ://www.rawmaterialsoftware.com/juce/api/ classArray.html#a13366b4435364fcd0d304cdcaebd726a
我无法理解如何将该比较器传递给我的排序函数。
或者,如果有人可以给我一个更好的方法来按升序和降序对字符串数组进行排序。
非常感谢
它非常简单,文档中对此进行了描述:
这将使用比较器对象对元素进行排序。传递的对象必须具有以下形式的方法:
int compareElements (ElementType first, ElementType second);
..并且此方法必须返回:
如果第一个在第二
个之前,则值 < 0 如果两个对象相等
,则值为 0 如果第二个在第一个之前,则值 > 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);
或者,如果有人可以给我一个更好的方法来按升序和降序对字符串数组进行排序。
一个例子可能是:
#include <string>
#include <vector>
#include <algorithm>
std::vector<std::string> vec;
/* populate your vector */
std::sort(vec.begin(), vec.end());
您可以尝试使用一些标准库来更轻松地完成字符串的存储和排序。