Partager via


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

Voir aussi

Référence

list, classe

Bibliothèque STL (Standard Template Library)