std::replace, std::replace_if
Da cppreference.com.
![]() | Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate. La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
Elemento definito nell'header <algorithm> | ||
template< class ForwardIt, class T > void replace( ForwardIt first, ForwardIt last, | (1) | |
template< class ForwardIt, class UnaryPredicate, class T > void replace_if( ForwardIt first, ForwardIt last, | (2) | |
Sostituisce tutti gli elementi che soddisfano criteri specifici con
new_value
nel [first, last)
gamma. La prima versione sostituisce gli elementi che sono uguali a old_value
, la seconda versione sostituisce gli elementi per i quali predicato p
ritorna true.Original:
Replaces all elements satisfying specific criteria with
new_value
in the range [first, last)
. The first version replaces the elements that are equal to old_value
, the second version replaces elements for which predicate p
returns true.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Indice |
[modifica] Parametri
first, last | - | l'intervallo di elementi di processo Original: the range of elements to process The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
old_value | - | il valore di elementi da sostituire Original: the value of elements to replace The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
p | - | unary predicate which returns true se il valore dell'elemento deve essere sostituito .Original: if the element value should be replaced The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. The signature of the predicate function should be equivalent to the following: bool pred(const Type &a); The signature does not need to have const &, but the function must not modify the objects passed to it. |
new_value | - | il valore da utilizzare come ricambio Original: the value to use as replacement The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Type requirements | ||
-ForwardIt must meet the requirements of ForwardIterator . |
[modifica] Valore di ritorno
(Nessuno)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Complessità
Esattamente
last - first
applicazioni del predicato.Original:
Exactly
last - first
applications of the predicate.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Possibile implementazione
First version |
---|
template<class ForwardIt, class T> void replace(ForwardIt first, ForwardIt last, const T& old_value, const T& new_value) { for (; first != last; ++first) { if (*first == old_value) { *first = new_value; } } } |
Second version |
template<class ForwardIt, class UnaryPredicate, class T> void replace_if(ForwardIt first, ForwardIt last, UnaryPredicate p, const T& new_value) { for (; first != last; ++first) { if(p(*first)) { *first = new_value; } } } |
[modifica] Esempio
Il codice riportato di seguito in un primo momento sostituisce tutte le occorrenze di 8 con 88 in un vettore di interi. Poi sostituisce tutti i valori inferiori 5 con 55 .
Original:
The following code at first replaces all occurrences of 8 with 88 in a vector of integers. Then it replaces all values less than 5 with 55.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <algorithm> #include <array> #include <iostream> #include <functional> int main() { std::array<int, 10> s{5, 7, 4, 2, 8, 6, 1, 9, 0, 3}; std::replace(s.begin(), s.end(), 8, 88); for (int a : s) { std::cout << a << " "; } std::cout << '\n'; std::replace_if(s.begin(), s.end(), std::bind(std::less<int>(), std::placeholders::_1, 5), 55); for (int a : s) { std::cout << a << " "; } std::cout << '\n'; }
Output:
5 7 4 2 88 6 1 9 0 3 5 7 55 55 99 6 55 9 55 55
[modifica] Vedi anche
copia un intervallo, la sostituzione degli elementi che soddisfano i criteri specifici con un altro valore Original: copies a range, replacing elements satisfying specific criteria with another value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (funzione di modello) |