我得到了一个声明的双数组:
double myArray[4] = {0.0, 5.0, 2.1, 99.1};
但我不知道如何将这个数组排序为(min - max)或其他方向。 我在研究期间发现的所有内容都是代码,如何对矢量进行排序。
所以我的问题。如何以正确的方式对此数组应用排序例程?
double myArray[4] = {0.0, 5.0, 2.1, 99.1};
std::sort(myArray.begin(), myArray.end(), [](const double& a, const double& b) {
return a > b;
}); // not working this way
答案 0 :(得分:6)
这样做:
std::sort(std::begin(myArray), std::end(myArray), comparator);
std::begin
和std::end
是免费的函数,默认情况下,它们分别只返回x.begin()
/ x.end()
,因此它们可以使用标准容器 - std::list
,std::vector
,std::array
等。这些函数也专门用于普通的旧C数组,支持上述代码。
你也可以将指针直接扔到std::sort
,因为指针是迭代器:
std::sort(myArray, myArray + 4, comparator);
但是,这需要您指定数组的大小(尽管可以自动完成),并且只要您将myArray
更改为std::vector
,就会中断。< / p>
请注意,std::sort
如果未指定比较器,则使用std::less
,这意味着它默认按升序排序。如果您需要降序,则可以指定std::greater
:
std::sort(std::begin(myArray), std::end(myArray), std::greater<double>{});