<algorithm>
Definisce le funzioni di modello del contenitore STL (Standard Template Library) che consentono di eseguire algoritmi.
(see relevant links below for specific algorithm syntax)
Note
Gli algoritmi STL sono generici perché possono operare su diverse strutture di dati. Le strutture di dati su cui possono operare non includono solo le classi dei contenitori STL come vector e list, ma anche le strutture di dati definite a livello di programma e le matrici di elementi che soddisfano i requisiti di un algoritmo specifico. Gli algoritmi STL raggiungono tale livello di generalità accedendo a e attraversando gli elementi di un contenitore indirettamente tramite gli iteratori.
Gli algoritmi STL consentono di elaborare gli intervalli dell'iteratore che vengono in genere specificati dalle relative posizioni iniziali o finali. Gli intervalli a cui si fa riferimento devono essere validi, ovvero tutti i puntatori negli intervalli devono essere dereferenziabili e, all'interno delle sequenze di ogni intervallo, l'ultima posizione deve essere raggiungibile dalla prima per incremento.
Gli algoritmi STL consentono di estendere le azioni supportate dalle operazioni e dalle funzioni membro di ciascun contenitore STL, nonché di usare, ad esempio, diversi tipi di oggetti contenitore contemporaneamente. Per trasferire le informazioni sullo scopo degli algoritmi sono stati usati due suffissi.
Il suffisso _if indica che l'algoritmo viene usato con oggetti funzione che operano sui valori degli elementi anziché sui valori degli elementi stessi. L'algoritmo find_if consente di cercare gli elementi i cui valori soddisfano i criteri specificati da un oggetto funzione e l'algoritmo find consente di cercare un valore specifico.
Il suffisso _copy indica che l'algoritmo non solo consente di modificare i valori degli elementi, ma anche di copiare i valori modificati in un intervallo di destinazione. L'algoritmo reverse consente di invertire l'ordine degli elementi in un intervallo e l'algoritmo reverse_copy consente anche di copiare il risultato in un intervallo di destinazione.
Gli algoritmi STL vengono spesso classificati in gruppi che forniscono indicazioni sul relativo scopo o sui relativi requisiti. Tali gruppi includono gli algoritmi di modifica in grado di modificare il valore degli elementi in contrapposizione agli algoritmi non di modifica che non consentono tale operazione. Gli algoritmi di modifica consentono di modificare l'ordine degli elementi, ma non i valori dei relativi elementi. La rimozione degli algoritmi può determinare l'eliminazione degli elementi da un intervallo o dalla copia di un intervallo. Gli algoritmi di ordinamento consentono di riordinare gli elementi di un intervallo in diversi modi e gli algoritmi degli intervalli ordinati possono agire solo sugli algoritmi i cui elementi sono stati ordinati in un determinato modo.
Gli algoritmi STL numerici forniti per l'elaborazione numerica dispongono del proprio file di intestazione <numeric> e gli oggetti funzione e gli adattatori vengono definiti nell'intestazione <functional>. Gli oggetti funzione che restituiscono valori booleani vengono definiti predicati. Il predicato binario predefinito è l'operatore di confronto operator<. In generale, gli elementi di cui viene eseguito l'ordinamento devono essere confrontabili come "minore di" in modo che, dati qualsiasi due elementi, sia possibile determinare che sono equivalenti (ovvero che uno non è minore dell'altro) o che uno è minore dell'altro. Di conseguenza, l'ordinamento viene eseguito tra gli elementi non equivalenti.
Funzioni
Cerca due elementi adiacenti uguali o che soddisfano una condizione specificata. |
|
Restituisce true quando una condizione è presente in ogni elemento dell'intervallo specificato. |
|
Restituisce true quando una condizione è presente almeno una volta nell'intervallo di elementi specificato. |
|
Verifica se in un intervallo ordinato è presente un elemento uguale a un valore specificato o equivalente a tale valore nel senso specificato da un predicato binario. |
|
Assegna i valori degli elementi di un intervallo di origine a un intervallo di destinazione, scorrendo la sequenza di origine degli elementi e assegnando loro nuove posizioni in avanti. |
|
Assegna i valori degli elementi di un intervallo di origine a un intervallo di destinazione, scorrendo la sequenza di origine degli elementi e assegnando loro nuove posizioni in indietro. |
|
Copia tutti gli elementi in un intervallo specificato che restituiscono true per una condizione specificata. |
|
Copia un numero specificato di elementi. |
|
Restituisce il numero di elementi di un intervallo i cui valori corrispondono a un valore specificato. |
|
Restituisce il numero di elementi di un intervallo i cui valori corrispondono a una condizione specificata. |
|
Confronta due intervalli elemento per elemento per verificarne l'uguaglianza o l'equivalenza nel senso specificato da un predicato binario. |
|
Trova una coppia di posizioni in un intervallo ordinato, la prima inferiore o equivalente alla posizione di un elemento specificato e la seconda maggiore della posizione di tale elemento, in cui il senso dell'equivalenza o dell'ordinamento usato per stabilire le posizioni nella sequenza può essere specificato da un predicato binario. |
|
Assegna lo stesso nuovo valore a ogni elemento di un intervallo specificato. |
|
Assegna un nuovo valore a un numero specificato di elementi di un intervallo a partire da un determinato elemento. |
|
Individua la posizione della prima occorrenza di un elemento in un intervallo con un valore specificato. |
|
Ricerca in un intervallo l'ultima sottosequenza identica a una sequenza specificata o equivalente nel senso specificato da un predicato binario. |
|
Ricerca la prima occorrenza di uno dei diversi valori all'interno di un intervallo di destinazione o la prima occorrenza di uno dei diversi elementi equivalenti nel senso specificato da un predicato binario in un set specificato di elementi. |
|
Individua la posizione della prima occorrenza di un elemento in un intervallo che soddisfa una condizione specificata. |
|
Restituisce il primo elemento nell'intervallo indicato che non soddisfa una determinata condizione. |
|
Applica un oggetto funzione specificato a ogni elemento ordinato in avanti all'interno di un intervallo e restituisce l'oggetto funzione. |
|
Assegna i valori generati da un oggetto funzione a ogni elemento di un intervallo. |
|
Assegna i valori generati da un oggetto funzione a un numero specificato di elementi di un intervallo e torna alla posizione immediatamente successiva all'ultimo valore assegnato. |
|
Verifica se un intervallo ordinato contiene tutti gli elementi contenuti in un secondo intervallo ordinato, in cui il criterio di ordinamento o di equivalenza tra gli elementi può essere specificato da un predicato binario. |
|
Combina gli elementi di due intervalli ordinati consecutivi in un unico intervallo ordinato, in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Restituisce true se gli elementi dell'intervallo specificato formano un heap. |
|
Restituisce true se l'intervallo specificato forma un heap fino all'ultimo elemento. |
|
Restituisce true se tutti gli elementi dell'intervallo specificato che testano true per una condizione precedono gli elementi che testano false. |
|
Determina se gli elementi in un determinato intervallo formano una permutazione valida. |
|
Restituisce true se gli elementi dell'intervallo specificato sono ordinati. |
|
Restituisce true se gli elementi dell'intervallo specificato sono ordinati. |
|
Scambia due valori a cui viene fatto riferimento da una coppia di iteratori specificati. |
|
Confronta due sequenze elemento per elemento per determinare quale delle due è minore. |
|
Trova la posizione del primo elemento in un intervallo ordinato con un valore maggiore o equivalente a un valore specificato, in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Converte gli elementi di un intervallo specificato in un heap in cui il primo elemento è il più grande e per il quale un criterio di ordinamento può essere specificato con un predicato binario. |
|
Confronta due oggetti e restituisce il maggiore dei due in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Trova la prima occorrenza dell'elemento più grande in un intervallo specificato in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Combina tutti gli elementi di due intervalli di origine ordinati in un unico intervallo di destinazione ordinato, in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Confronta due oggetti e restituisce il minore dei due in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Trova la prima occorrenza dell'elemento più piccolo in un intervallo specificato in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Confronta due parametri di input e li restituisce come coppia, in ordine crescente. |
|
Esegue le operazioni eseguite da min_element e da max_element in un'unica chiamata. |
|
Confronta due intervalli elemento per elemento per verificarne l'uguaglianza o l'equivalenza nel senso specificato da un predicato binario e individua la prima posizione in cui viene riscontrata una differenza. |
|
Sposta gli elementi associati a un intervallo specificato. |
|
Sposta gli elementi di un iteratore in un altro. Lo spostamento inizia con l'ultimo elemento in un intervallo specificato e termina con il primo elemento in quell'intervallo. |
|
Riordina gli elementi in un intervallo in modo che l'ordine originale venga sostituito dalla maggior permutazione a livello lessicografico successiva, se esiste, dove il senso di successivo può essere specificato con un predicato binario. |
|
Restituisce true quando una condizione non è mai presente tra gli elementi dell'intervallo specificato. |
|
Esegue la partizione di un intervallo di elementi, individuando correttamente l'ennesimo elemento della sequenza nell'intervallo in modo che tutti gli elementi che lo precedono siano minori o uguali a esso e che tutti gli elementi che lo seguono nella sequenza siano maggiori o uguali. |
|
Dispone un numero specificato di elementi più piccoli di un intervallo in un ordine non decrescente o secondo un criterio di ordinamento specificato da un predicato binario. |
|
Copia gli elementi di un intervallo di origine in un intervallo di destinazione in cui gli elementi di origine sono ordinati in base al predicato binario relativo al valore inferiore o a un altro predicato binario specificato. |
|
Classifica gli elementi di un intervallo in due set non contigui, con gli elementi che soddisfano il predicato unario che precedono quelli che non lo soddisfano. |
|
Copia gli elementi per i quali una condizione è true in una destinazione e quelli per i quali la condizione è false in un'altra. Gli elementi devono provenire da un intervallo specificato. |
|
Restituisce il primo elemento nell'intervallo specificato che non soddisfa la condizione. Gli elementi vengono ordinati in modo che quelli che soddisfano la condizione precedano quelli che non la soddisfano. |
|
Rimuove l'elemento più grande dall'inizio di un heap alla penultima posizione nell'intervallo e costituisce un nuovo heap con gli elementi rimanenti. |
|
Riordina gli elementi in un intervallo in modo che l'ordine originale venga sostituito dalla maggior permutazione a livello lessicografico successiva, se esiste, dove il senso di successivo può essere specificato con un predicato binario. |
|
Aggiunge un elemento che si trova alla fine di un intervallo a un heap esistente costituito dagli elementi precedenti dell'intervallo. |
|
Ridispone una sequenza di N elementi di un intervallo in una di N! possibili disposizioni selezionate in modo casuale. |
|
Elimina un valore specificato da un intervallo specificato senza alterare l'ordine degli elementi rimanenti e restituendo la fine di un nuovo intervallo senza il valore specificato. |
|
Copia gli elementi di un intervallo di origine in un intervallo di destinazione, ad eccezione degli elementi di un determinato valore, senza alterare l'ordine degli elementi rimanenti e restituendo la fine di un nuovo intervallo di destinazione. |
|
Copia gli elementi di un intervallo di origine in un intervallo di destinazione, ad eccezione degli elementi che soddisfano un predicato, senza alterare l'ordine degli elementi rimanenti e restituendo la fine di un nuovo intervallo di destinazione. |
|
Elimina gli elementi che soddisfano un predicato da un intervallo specificato senza alterare l'ordine degli elementi rimanenti e restituendo la fine di un nuovo intervallo senza il valore specificato. |
|
Esamina ogni elemento di un intervallo e lo sostituisce se corrisponde a un valore specificato. |
|
Esamina ogni elemento di un intervallo di origine e lo sostituisce se corrisponde a un valore specificato copiando nel contempo il risultato in un nuovo intervallo di destinazione. |
|
Esamina ogni elemento di un intervallo di origine e lo sostituisce se soddisfa un predicato specificato copiando nel contempo il risultato in un nuovo intervallo di destinazione. |
|
Esamina ogni elemento di un intervallo e lo sostituisce se soddisfa un predicato specificato. |
|
Inverte l'ordine degli elementi all'interno di un intervallo. |
|
Inverte l'ordine degli elementi all'interno di un intervallo di origine copiandoli nel contempo in un intervallo di destinazione |
|
Scambia gli elementi di due intervalli adiacenti. |
|
Scambia gli elementi di due intervalli adiacenti all'interno di un intervallo di origine e copia il risultato in un intervallo di destinazione. |
|
Cerca la prima occorrenza di una sequenza all'interno di un intervallo di destinazione i cui elementi sono uguali a quelli di una sequenza specificata di elementi oppure i cui elementi sono equivalenti nel senso specificato da un predicato binario agli elementi della sequenza specificata. |
|
Cerca la prima sottosequenza di un intervallo di un numero specificato di elementi che dispongono di un valore specifico o di una relazione con tale valore come specificato da un predicato binario. |
|
Unisce tutti gli elementi appartenenti a un intervallo di origine ordinato, ma non a un secondo intervallo di origine ordinato, in un unico intervallo di destinazione ordinato in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Unisce tutti gli elementi appartenenti a entrambi gli intervalli di origine ordinati in un unico intervallo di destinazione ordinato in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Unisce tutti gli elementi appartenenti a uno degli intervalli di origine ordinati, ma non ad entrambi, in un unico intervallo di destinazione ordinato in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Unisce tutti gli elementi appartenenti almeno a uno dei due intervalli di origine ordinati in un unico intervallo di destinazione ordinato in cui il criterio di ordinamento può essere specificato da un predicato binario. |
|
Dispone gli elementi di un intervallo specificato in un ordine non decrescente o secondo un criterio di ordinamento specificato da un predicato binario. |
|
Riproduce con sequenza casuale (ridispone) gli elementi di un intervallo specifico usando un generatore di numeri casuali. |
|
Converte un heap in un intervallo ordinato. |
|
Classifica gli elementi di un intervallo in due set non contigui, con gli elementi che soddisfano un predicato unario che precedono quelli che non lo soddisfano, mantenendo l'ordine relativo degli elementi equivalenti. |
|
Dispone gli elementi di un intervallo specificato in un ordine non decrescente o secondo un criterio di ordinamento specificato da un predicato binario e mantiene l'ordinamento relativo degli elementi equivalenti. |
|
Scambia i valori degli elementi tra due tipi di oggetti, assegnando il contenuto del primo oggetto al secondo oggetto e il contenuto del secondo al primo. |
|
Scambia gli elementi di un intervallo con gli elementi di un altro intervallo di uguali dimensioni. |
|
Applica un oggetto funzione ad ogni elemento di un intervallo di origine o a una coppia di elementi di due intervalli di origine e copia i valori restituiti dell'oggetto funzione in un intervallo di destinazione. |
|
Rimuove gli elementi duplicati adiacenti l'uno rispetto all'altro in un intervallo specificato. |
|
Copia gli elementi di un intervallo di origine in un intervallo di destinazione ad eccezione degli elementi duplicati adiacenti l'uno rispetto all'altro. |
|
Trova la posizione del primo elemento in un intervallo ordinato con un valore maggiore di un valore specificato, in cui il criterio di ordinamento può essere specificato da un predicato binario. |
Vedere anche
Riferimenti
Sicurezza dei thread nella libreria standard C++