如何排序双数组?

时间:2018-04-04 11:41:01

标签: c++ arrays sorting double

我得到了一个声明的双数组:

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

1 个答案:

答案 0 :(得分:6)

这样做:

std::sort(std::begin(myArray), std::end(myArray), comparator);

std::beginstd::end是免费的函数,默认情况下,它们分别只返回x.begin() / x.end(),因此它们可以使用标准容器 - std::liststd::vectorstd::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>{});