std::replace, std::replace_if
De cppreference.com
|
|
Esta página se ha traducido por ordenador/computador/computadora de la versión en inglés de la Wiki usando Google Translate.
La traducción puede contener errores y palabras aparatosas/incorrectas. Planea sobre el texto para ver la versión original. Puedes ayudar a corregir los errores y mejorar la traducción. Para instrucciones haz clic aquí. |
| Definido en el archivo de encabezado <algorithm>
|
||
template< class ForwardIt, class T > void replace( ForwardIt first, ForwardIt last, const T& old_value, const T& new_value ); |
(1) | |
template< class ForwardIt, class UnaryPredicate, class T > void replace_if( ForwardIt first, ForwardIt last, UnaryPredicate p, const T& new_value ); |
(2) | |
Reemplaza todos los elementos que cumplen con criterios específicos
new_value en el [first, last) rango. La primera versión sustituye a los elementos que son iguales a old_value, la segunda versión sustituye a los elementos para los que predicado p vuelve 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.
Parámetros
| first, last | - | el intervalo de elementos de proceso
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 | - | el valor de los elementos a sustituir
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 | - | Predicado unario que devuelve true si el valor del elemento debe ser reemplazado . 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. La expresión |
| new_value | - | el valor a usar como reemplazo
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. |
| Requisitos de tipo | ||
-ForwardIt debe reunir los requerimientos de ForwardIterator.
| ||
Valor de retorno
(Ninguno)
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.
Complejidad
Exactamente
last - first aplicaciones del predicado .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.
Posible implementación
| Primera versión |
|---|
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;
}
}
}
|
| Segunda versión |
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;
}
}
}
|
Ejemplo
El siguiente código al principio reemplaza todas las apariciones de
8 con 88 en un vector de enteros. A continuación, se reemplazan todos los valores menores que 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.
Ejecuta este código
#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';
}
Salida:
5 7 4 2 88 6 1 9 0 3
5 7 55 55 99 6 55 9 55 55
Ver también
Copia un intervalo, en sustitución de elementos que cumplan criterios específicos con otro valor 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. (plantilla de función) |