algoritmi numerici generalizzati. STL (parte 14)




Generalizzato algoritmi numerici STL C ++il prossimo, gruppo molto necessario e molto potente алгоритмов STL sono generalizzati algoritmi numerici (testata <numerico>). Questa non è una sorta di metodi computazionali speciali, come si potrebbe pensare basato sul nome. Si algoritmi, permettono di utilizzare la libreria noto o le proprie attività informatiche alla totalità degli elementi contenitori. E perché così, allora essi sono chiamati come tutti gli altri algoritmi STL. algoritmi utilizzati sono generalizzati, prevalentemente in calcoli matematici rispetto ai contenitori, contiene elementi numerici. Ma questo non significa necessariamente. E se non siete interessati al calcolo numerico (ad esempio dal campo della elaborazione del segnale digitale), allora si può solo saltare questa parte della presentazione…

Lista di STL ha presentato generalizzato algoritmi numerici: iota (la creazione di una sequenza monotona crescente), accumulare (accumulazione), prodotto interno (skalyarnoe proïzvedenïe), partial_sum (somma parziale), adjacent_difference (differenza adiacente).

Illustrazione funziona meglio per mantenere il l'algoritmo utilizzato e intuitivo accumulare. Questo algoritmo riduce (riduce la dimensione) contenitore con i valori di accumulo. in particolare, per semplici valori numerici, si gira vettore<> o lista<> a un singolo valore risultato scalare.

algoritmo accumulare (come, tuttavia, maggior parte degli altri) ha 2 forme sintattiche:

Nel 1 ° modulo (è meno interessante) algoritmo riassume il il valore degli elementi contenitori. Non dimenticare contemporaneamente, tale che corda, per esempio, operazione ‘+‘ Significa concatenazione, incollaggio). Nella seconda forma l'algoritmo raccoglie il risultato di un'operazione binaria (funzione di 2 variabili), utilizzato per accumulare valore (batteria) ea sua volta per ciascun dell'elemento contenitore.

Non è chiaro? Questa potente tecnica, e ora tutto sarà chiaro dall'esempio…

In statistica matematica sono utilizzati diversi tipi di valori medi per la sequenza numerica:

  • media aritmetica:

    SA1

  • media geometrica:

    SG2

  • media armonica:

    SR3

  • La quadratica media:

    SQ4

Noi non approfondire il significato di ogni opzione. Faremo una richiesta, che calcola la media e alcune più caratteristiche (dispersione, deviazione standard) per inserire una sequenza numerica. L'ingresso seriale input o un terminale, o il reindirizzamento dei file di dati pre-preparato:

È facile vedere, ogni formule matematiche complesse scritte sopra è calcolato su una sola riga, usando la tecnica di algoritmi generalizzate:

algoritmi numerici generalizzata stl c ++

Qui possiamo vedere il rapporto ben noto, che conferma la correttezza dei nostri calcoli. Esso consiste nel fatto, che per ogni sequenza numerica media aritmetica è maggiore o uguale alla media geometrica, che, a sua volta, maggiore o uguale alla media armonica. E la parità in queste affermazioni può essere raggiunto solo se tutti i membri di una sequenza di numeri sono uguali:

algoritmi numerici generalizzata stl c ++

Torniamo allo studio del codice. La prima chiamata dell'algoritmo accumulare( B, e, 0. ) Essa mostra la 1a forma di utilizzo: valori container vengono aggiunti al valore iniziale 0.0.

avvertimento!: Registra punti al valore iniziale costante, indicando, esso vero valore - fondamentalmente importante. Senza questo codice verrà compilato anche senza avvisi, ma fatto con tutto errato ed estremamente difficile in risultati di interpretazione! Questo è, algoritmi che sono definite come modello, e il tipo di terzo parametro determina l'accumulo di operazioni interne verrà utilizzato per qualsiasi tipo di dato.

tutto il resto (4 pezzi) sfide accumulare() utilizzare il 2 ° modulo di chiamata – 4 ° parametro di trasmissione funzione accumulazione. Come si vede dagli esempi, ci vogliono i parametri correnti del valore accumulato e l'elemento successivo nel contenitore. E restituisce l'operazione di accumulo. Per chiarezza,, accumulando tutte le funzioni sono scritti nell'esempio di una forma semplice e chiara. in pratica, al fine di evitare la dipendenza dal tipo di dati trattati, essi sono di solito realizzati, come una funzione template. Poi si potrebbe assomigliare a questo:

infine, nota, se non notato fino ad ora, che l'accumulo di quantità usiamo il valore iniziale 0 (3-Prima opzione accumulare() ), e l'accumulo di fabbrica, naturalmente, 1, con il tipo di dati corrispondente.

Newsletter nuove lezioni sulla programmazione:

data
pagina
algoritmi STL numerici generalizzati. parte 14
valutazione
5
olio

Di olio

esperienze pratiche circa lo sviluppo del software 40 anni. Maestro globale Logic società di software internazionale. IBM Developer funziona autore permanente di pubblicazioni. redattore scientifico del computer casa editrice letteratura "Simbolo-Plus", San Pietroburgo.

2 pensieri su "algoritmi numerici generalizzati. STL (parte 14)

  1. ciao a tutti!
    Сегодня заглянул на онлайн сайты, где раньше смотрел, удивленно нашел что они не работают, то есть их фильмы не транслируют вообще, типо в вашей стране видео запрещенно!
    Теперь фильмы не глянуть онлайн по всюду фильмы удалены, что опять назад на торренты?

Lascia un Commento

Inserire il codice nei tag: <pre class="lang:C ++ decodifica:true ">IL TUO CODICE</pre>