◐ Shell
clean mode source ↗

std::replace_copy, std::replace_copy_if — cppreference.com

De cppreference.com

<metanoindex/>

<tbody> </tbody>

Déclaré dans l'en-tête

<algorithm>

template< class InputIt, class OutputIt, class T > OutputIt replace_copy( InputIt first, InputIt last, OutputIt d_first, const T& old_value, const T& new_value );

(1)

template< class InputIt, class OutputIt, class UnaryPredicate, class T > OutputIt replace_copy_if( InputIt first, InputIt last, OutputIt d_first, UnaryPredicate p, const T& new_value );

(2)

Copie tous les éléments de la gamme [first, last) à un autre début de la plage à d_first remplacer tous les éléments répondant à des critères spécifiques new_value. La première version remplace les éléments qui sont égaux à old_value, la deuxième version remplace les éléments pour lesquels prédicat retourne p true. Les gammes de source et de destination ne peuvent pas se chevaucher .

Original:

Copies the all elements from the range [first, last) to another range beginning at d_first replacing all elements satisfying specific criteria with new_value. The first version replaces the elements that are equal to old_value, the second version replaces elements for which predicate p returns true. The source and destination ranges cannot overlap.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Paramètres

first, last -

l'éventail des éléments à copier

Original:

the range of elements to copy

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

d_first -

le début de la plage de destination

Original:

the beginning of the destination range

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

old_value -

la valeur des éléments à remplacer

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 - prédicat unéaire qui retourne ​true

si la valeur de l'élément doit être remplacé

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.

.

L'expression p(v) doit pouvoir être convertie à bool pour tout argument v de type (possiblement const) VT, où VT est le type de valeur de InputIt, inconditionellement de value category, et ne doit pas modifier v. Ainsi, un type-paramètre VT&n'est pas permis ainsi que pour VT sauf pour VT un déplacement est équivalent à une copie (depuis C++11). ​

new_value -

la valeur à utiliser en remplacement

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
-InputIt must meet the requirements of InputIterator.
-OutputIt must meet the requirements of OutputIterator.

Retourne la valeur

Itérateur à l'élément après le dernier élément copié .

Original:

Iterator to the element past the last element copied.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Complexité

Exactement last - first applications du prédicat .

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.

Mise en œuvre possible

First version
template<class InputIt, class OutputIt, class T>
OutputIt replace_copy(InputIt first, InputIt last, OutputIt d_first,
                      const T& old_value, const T& new_value)
{
    for (; first != last; ++first) {
        *d_first++ = (*first == old_value) ? new_value : *first;
    }
    return d_first;
}
Second version
template<class InputIt, class OutputIt, 
         class UnaryPredicate, class T>
OutputIt replace_copy_if(InputIt first, InputIt last, OutputIt d_first,
                         UnaryPredicate p, const T& new_value)
{
    for (; first != last; ++first) {
        *d_first++ = (p( *first ) ? new_value : *first;
    }
    return d_first;
}

Exemple

La copie suivante imprime un vecteur, en remplaçant toutes les valeurs de plus de 5 à 99 à la volée .

Original:

The following copy prints a vector, replacing all values over 5 with 99 on the fly.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

#include <algorithm>
#include <vector>
#include <iostream>
#include <iterator>
#include <functional>

int main()
{
    std::vector<int> v{5, 7, 4, 2, 8, 6, 1, 9, 0, 3};
    std::replace_copy_if(v.begin(), v.end(),
                         std::ostream_iterator<int>(std::cout, " "),
                         [](int n){return n > 5;}, 99);
    std::cout << '\n';
}

Résultat :

Voir aussi

supprime des éléments répondant à des critères spécifiques

Original:

removes elements satisfying specific criteria

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(fonction générique) [edit]