Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Überprüft jedes Element in einem Bereich und ersetzt, sofern das angegebene Prädikat erfüllt.
template<class ForwardIterator, class Predicate, class Type>
void replace_if(
ForwardIterator _First,
ForwardIterator _Last,
Predicate _Pred,
const Type& _Val
);
Parameter
_First
Ein Vorwärtsiterator, der auf der Position des ersten Elements im Bereich zeigt, in dem Elemente ersetzt werden._Last
Ein Iterator, der auf der Position eine hinter dem letzten Element im Bereich zeigt, in dem Elemente ersetzt werden._Pred
Das Prädikat, unäre das erfüllt sein muss, ist der Wert eines Elements wird ersetzt werden._Val
Der neue Wert, der an Elemente zugewiesen wird, deren alter Wert das Prädikat erfüllt.
Hinweise
Der Bereich, auf den verwiesen wird, gültig sein; muss alle Zeiger müssen dereferenzierbar befinden der Sequenz ist die letzte Position der ersten von Zunahme erreichbar.
Die Reihenfolge der Elemente, die nicht ersetzt werden, bleibt stabil.
Der Algorithmus replace_if ist eine Verallgemeinerung des Algorithmus replace und ermöglicht ein beliebiges, anstatt Gleichheit zu einem angegebenen konstanten Wert angegeben werden Prädikat.
operator==, das verwendet wird, um die Gleichheit zwischen Elementen zu bestimmen, muss eine Äquivalenzrelation zwischen den Operanden verlangen.
Die Komplexität ist linear: es gibt (_Last - _First) Vergleiche auf Gleichheit und höchstens (_Last - _First) Zuweisungen von neuen Werten.
Beispiel
// alg_replace_if.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <iostream>
bool greater6 ( int value ) {
return value >6;
}
int main( ) {
using namespace std;
vector <int> v1;
vector <int>::iterator Iter1;
int i;
for ( i = 0 ; i <= 9 ; i++ )
v1.push_back( i );
int ii;
for ( ii = 0 ; ii <= 3 ; ii++ )
v1.push_back( 7 );
random_shuffle ( v1.begin( ), v1.end( ) );
cout << "The original vector v1 is:\n ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
// Replace elements satisfying the predicate greater6
// with a value of 70
replace_if ( v1.begin( ), v1.end( ), greater6 , 70);
cout << "The vector v1 with a value 70 replacing those\n "
<< "elements satisfying the greater6 predicate is:\n ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
}
Beispielausgabe
The original vector v1 is:
( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 ).
The vector v1 with a value 70 replacing those
elements satisfying the greater6 predicate is:
( 70 1 70 2 0 70 70 3 4 6 70 5 70 70 ).
Anforderungen
Header: <algorithm>
Namespace: std