2010-05-24 20 views
5

Ho una matrice di (4) numeri in virgola mobile e ho bisogno di ordinare la matrice in ordine decrescente. Sono abbastanza nuovo di C++, e mi chiedevo quale sarebbe il modo migliore per farlo?ordina una matrice di float in C++

Grazie.

risposta

18

Usa std::sort con un comparatore non predefinita:

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

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

@sth - dimenticato. Aggiornamento della mia risposta ... –

+2

Per il principiante, 'std :: sort' è definito nell'intestazione' 'in STL. Ovviamente, se si tratta di un esercizio di compiti a casa, probabilmente dovresti implementare la tua funzione 'sort'. – Johnsyweb

+0

@RSamuelKlatchko Qual è la "dimensione" nel tuo codice? – tmighty

1

Assumendo il seguente:

float my_array[4]; 

È possibile ordinare in questo modo:

#include <algorithm> 

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

Si noti che il secondo parametro (last) punta a uno scorso la fine del tuo array di 4 elementi; questo è il modo corretto per passare la fine dell'array agli algoritmi STL. Da lì è quindi possibile chiamare:

std::reverse(first, last); 

Per invertire il contenuto dell'array. Puoi anche scrivere un comparatore personalizzato per la routine sort, ma lo considererei un passaggio sopra STL per principianti; tocca a voi.

+0

Ti sei perso la parte "in ordine decrescente" della domanda. – pmr

+0

@ pmr: corretto, grazie. – fbrereto

Problemi correlati