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.
Veranschaulicht, wie die - Funktion remove_if Standardvorlagenbibliothek (STL) in Visual C++ verwenden.
template<class ForwardIterator, class Predicate> inline
ForwardIterator remove_if(
ForwardIterator First,
ForwardIterator Last,
Predicate Pred
)
Hinweise
Hinweis |
|---|
Die Klasse/die Parameternamen im Prototyp stimmen nicht die Version in der Headerdatei ab.Einige wurden geändert, um die Lesbarkeit zu verbessern. |
Der remove_if Algorithmus werden alle Elemente im Bereich (First, Last) diese Ursache das Prädikat, um true zurückzugeben.Es wird ein Iterator gleich Last zurück - n, wobei n = Anzahl Elemente sich entfernt haben.Die Elemente des letzten n des Bereichs haben die gültigen jedoch nicht angegebenen Werte.Die Größe des Containers bleibt gleich.
Beispiel
// remove_if.cpp
// compile with: /EHsc
// Illustrates how to use the remove_if function.
//
// Functions:
// remove_if - remove all elements from the sequence that
// satisfies a predicate.
// bind2nd - Returns true for elements for which the condition is true
// begin - Returns an iterator that points to the first element in a
// sequence
// end - Returns an iterator that points one past the end of a sequence
//////////////////////////////////////////////////////////////////////
// disable warning C4786: symbol greater than 255 character,
// okay to ignore
#pragma warning(disable: 4786)
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
int main()
{
const int VECTOR_SIZE = 8 ;
// Define a template class vector of integers
typedef vector<int > IntVector ;
//Define an iterator for template class vector of integer
typedef IntVector::iterator IntVectorIt ;
IntVector Numbers(VECTOR_SIZE) ; //vector containing numbers
IntVectorIt start, end, it, last;
start = Numbers.begin() ; // location of first
// element of Numbers
end = Numbers.end() ; // one past the location
// last element of Numbers
//Initialize vector Numbers
Numbers[0] = 10 ;
Numbers[1] = 20 ;
Numbers[2] = 10 ;
Numbers[3] = 15 ;
Numbers[4] = 12 ;
Numbers[5] = 7 ;
Numbers[6] = 9 ;
Numbers[7] = 10 ;
cout << "Before calling remove_if" << endl ;
// print content of Numbers
cout << "Numbers { " ;
for(it = start; it != end; it++)
cout << *it << " " ;
cout << " }\n" << endl ;
// remove all elements from Numbers that <= 10
last = remove_if(start, end, bind2nd(less_equal<int>(), 10) ) ;
cout << "After calling remove_if" << endl ;
// print content of Numbers
cout << "Numbers { " ;
for(it = start; it != end; it++)
cout << *it << " " ;
cout << " }\n" << endl ;
//print number of elements removed from Numbers
cout << "Total number of elements removed from Numbers = "
<< end - last << endl ;
//print only the valid elements of Number
cout << "Valid elements of Numbers { " ;
for(it = start; it != last; it++)
cout << *it << " " ;
cout << " }\n" << endl ;
}
Output
Before calling remove_if
Numbers { 10 20 10 15 12 7 9 10 }
After calling remove_if
Numbers { 20 15 12 15 12 7 9 10 }
Total number of elements removed from Numbers = 5
Valid elements of Numbers { 20 15 12 }
Anforderungen
Header: <algorithm>
Hinweis