C++/STL and uniq

J’ai une “liste” de string (stockées dans un objet de type vector) mais je souhaiterai éliminer les doublons, connaissez-vous une méthode qui le fait ?

L’équivalent d’un “uniq” ou “sort -u” en shell Unix, en fait.

Siiii ça existe. J’ai trouvé et c’est tout fait :)… j’aurais eu du mal à accepter que la STL ne fournisse pas ce service. Alors voilà un petit exemple d’utilisation pour ceux que ça intéresse :

#include
#include
#include

int main(void)
{
vector vstrTemp ;
vector::iterator ivstrNewEnd ;

// Remplissage dans n'importe quel sens
vstrTemp.push_back( string("ligne 1") ) ;
vstrTemp.push_back( string("ligne 1") ) ;
vstrTemp.push_back( string("ligne 1") ) ;
vstrTemp.push_back( string("ligne 3") ) ;
vstrTemp.push_back( string("ligne 3") ) ;
vstrTemp.push_back( string("ligne 3") ) ;
vstrTemp.push_back( string("ligne 7") ) ;
vstrTemp.push_back( string("ligne 7") ) ;
vstrTemp.push_back( string("ligne 7") ) ;
vstrTemp.push_back( string("ligne 0") ) ;
vstrTemp.push_back( string("ligne 0") ) ;
vstrTemp.push_back( string("ligne 0") ) ;
vstrTemp.push_back( string("ligne 0") ) ;
vstrTemp.push_back( string("ligne 5") ) ;
vstrTemp.push_back( string("ligne 0") ) ;
vstrTemp.push_back( string("ligne 0") ) ;
vstrTemp.push_back( string("ligne 0") ) ;
vstrTemp.push_back( string("ligne 9") ) ;


// On tri
sort(vstrTemp.begin(), vstrTemp.end()) ;

// une fois trié, hop unicité avec ivstrNewEnd qui décrit
// la nouvelle fin de vecteur.
ivstrNewEnd = unique(vstrTemp.begin(), vstrTemp.end()) ;

// Je me tamponne du reste donc je le détruis
vstrTemp.erase(ivstrNewEnd, vstrTemp.end()) ;

// Affichage du nouveau vecteur trié contenant des entrées uniques :)
for(vector::const_iterator i = vstrTemp.begin() ;
      i != vstrTemp.end() ;
      i++)
{
    cout

Y a pas dans la lib std je pense (chui pas un specialiste C++ du tout, donc a confirmer), faut te coder ca a la main :wink: Desole. Si tes string sont longues tu vas pouvoir commencer a regarder les fonctions de hash :nuts: