list::unique
Supprime les doublons adjacents ou les éléments adjacents qui satisfont un autre prédicat binaire dans une liste.
void unique( ); template<class BinaryPredicate> void unique( BinaryPredicate _Pred );
Paramètres
- _Pred
Prédicat binaire utilisé pour comparer des éléments consécutifs.
Notes
Cette fonction suppose que la liste est triée, pour que tous les éléments dupliqués soient adjacents. Les doublons qui ne sont pas adjacents ne sont pas supprimés.
La première fonction membre supprime chaque élément dont la valeur est égale à l'élément précédent.
La seconde fonction membre supprime chaque élément conforme à la fonction de prédicat _Pred par comparaison à son élément précédent. Vous pouvez utiliser des objets de fonction binaire déclarés dans l'en-tête <functional> pour l'argument _Pred ou créer votre propre objet.
Exemple
// list_unique.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter, c2_Iter,c3_Iter;
not_equal_to<int> mypred;
c1.push_back( -10 );
c1.push_back( 10 );
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 20 );
c1.push_back( -10 );
cout << "The initial list is c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
list <int> c2 = c1;
c2.unique( );
cout << "After removing successive duplicate elements, c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
list <int> c3 = c2;
c3.unique( mypred );
cout << "After removing successive unequal elements, c3 =";
for ( c3_Iter = c3.begin( ); c3_Iter != c3.end( ); c3_Iter++ )
cout << " " << *c3_Iter;
cout << endl;
}
Configuration requise
En-tête : <list>
Espace de noms : std