2010-05-24 72 views

回答

18

使用std::sort使用非默認的比較:

float data[SIZE]; 
data[0] = ...; 
... 

std::sort(data, data + size, std::greater<float>()); 
+0

@sth - 忘記了這一點。更新了我的答案... – 2010-05-24 23:01:15

+2

對於初學者,std :: sort在STL中的頭中定義。當然,如果這是一項家庭作業練習,你可能應該實現你自己的「排序」功能。 – Johnsyweb 2010-05-24 23:35:52

+0

@RSamuelKlatchko什麼是代碼中的「大小」? – tmighty 2013-10-18 13:37:04

1

假設如下:

float my_array[4]; 

你可以像這樣對它進行排序:

#include <algorithm> 

// ... in your code somewhere 
float* first(&my_array[0]); 
float* last(first + 4); 
std::sort(first, last); 

注意,第二個參數(last)指向已過去 4元素數組的結尾;這是將數組的末尾傳遞給STL算法的正確方法。然後您可以撥打:

std::reverse(first, last); 

反轉數組的內容。您也可以爲sort例程編寫自定義比較器,但我認爲這是高於初學者級STL的一個步驟;隨你便。

+0

您錯過了「按降序排列」部分的問題。 – pmr 2010-05-24 23:01:15

+0

@pmr:修正,謝謝。 – fbrereto 2010-05-24 23:01:47