2012-03-11 12 views
7

Mi trovo spesso a scrivere funzioni di valore massimo che ricercano attraverso una serie di doppi. Uso funzioni come queste per normalizzare i dati prima della visualizzazione grafica.Funzione C++ per trovare il valore massimo in una matrice di doppi?

C'è un modo migliore per trovare il valore massimo di una matrice di doppi? Esiste una funzione standard per trovare il valore massimo in un array? Ci sono delle intrinseche per questa operazione? Ricordo che le istruzioni ASM specializzate esistevano nei chip DSP.

risposta

16

Sì! C'è una funzione chiamata std::max_element:

double arr[LENGTH] = /* ... */ 
double max = *std::max_element(arr, arr + LENGTH); 

Avrai bisogno di #include <algorithm> per fare questo. Quella testata ha un sacco di chicche in esso, e vale la pena prendersi del tempo per saperne di più sui contenitori STL e sulle librerie di algoritmi, in quanto possono rendere la vita così molto più facile.

Finché siamo in tema, considerare di esaminare std::vector o std::array come sostituzioni per matrici C++ non elaborate. Sono più sicuri e un po 'più facili da usare.

Spero che questo aiuti!

+0

Sono troppo spaventato per sostituirli con std :: vector perché il mio codice è auto-vettore abbastanza bene. – Mikhail

+0

@Misha: Non aver paura, prova solo ed esegui alcuni test per assicurarti che le tue prestazioni siano ancora buone. Non è affatto una paura irrazionale. Abbiamo riscontrato un calo delle prestazioni di quasi il 20% in alcune sezioni di codici critici per le prestazioni (un sacco di operazioni in loop e in virgola mobile) e l'abbiamo rintracciata fino al passaggio dal VS 6 al 2005. Avevano controllato gli iteratori e i controlli (iirc) acceso per impostazione predefinita. –

Problemi correlati