我得到了一个声明的双数组:
double myArray[4] = {0.0, 5.0, 2.1, 99.1};
Run Code Online (Sandbox Code Playgroud)
但我不知道如何对这个数组进行排序,如(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
Run Code Online (Sandbox Code Playgroud)
像这样做:
std::sort(std::begin(myArray), std::end(myArray), comparator);
Run Code Online (Sandbox Code Playgroud)
std::begin
和std::end
是,默认情况下,只返回自由函数x.begin()
/ x.end()
,分别,从而它们与标准集装箱工作- ,,std::list
等.这些功能也被专门用于普通老式C数组,使上述代码.std::vector
std::array
你也可以直接抛出指针std::sort
,因为指针是迭代器:
std::sort(myArray, myArray + 4, comparator);
Run Code Online (Sandbox Code Playgroud)
但是,这需要您指定数组的大小(尽管可以自动完成),并且一旦更改myArray
为a,就会中断std::vector
.
需要注意的是std::sort
使用std::less
,如果你不指定比较,这意味着它在排序默认为按升序排列.如果您需要降序,则可以指定std::greater
:
std::sort(std::begin(myArray), std::end(myArray), std::greater<double>{});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
114 次 |
最近记录: |