IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[STL] qsort() et std::vector<int>


Sujet :

C++

Vue hybride

archer [STL] qsort() et... 22/11/2008, 11h58
nikko34 dans la STL ( d'où vient... 22/11/2008, 12h39
camboui Les fonctions de comparaison... 24/11/2008, 16h01
loufoque std::sort est plus rapide que... 25/11/2008, 20h42
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Par défaut [STL] qsort() et std::vector<int>
    Salut.
    en fait, je veux trier un vecteur de int avec la fonction qsort(), je sais le faire avec un tableau mais pour vector ça me dépasse surtout pour la fonction de comparaison.
    Si vous avez des suggestions je vous serai reconnaissant.
    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    dans la STL ( d'où vient std::vector ) il y a les <algorithm> dont un qui s'appelle std::sort.

    Et qui trie un vecteur ( et autres containers ).

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <algorithm>
    #include <vector>
     
    int main()
    {
        std::vector< int > v;
     
        v.push_back( 1 );
        v.push_back( 3 );
        v.push_back( 2 );
     
        std::sort( v.begin(), v.end() );
    }
    si tu utilises les std::vector et autres objets de la librairie standard (comme les std::string), je te conseilles d'oublier le C et de trouver une bonne doc sur la STL du C++.

    Pour la fonction de comparaison, si tu as des classes persos, un des moyens est de définir un opérateur< membre de cette classe. Un autre moyen est de fournir effectivement des fonctions de comparaisons. Mais si tu veux trier tes int dans un ordre croissant, tu n'en as pas besoin.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Les fonctions de comparaison s'appellent des "foncteurs" (functor en anglais). Je le précise car "google n'est pas notre ami" quand on ignore un terme.

    Aussi, car on ne trie pas un vector<> pour le plaisir, une recherche dans un vector<> trié se fait via std::lower_bound() (éventuellement binary_search()). Tout cela se trouve dans

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    std::sort est plus rapide que qsort.

    Enfin si tu veux utiliser qsort, rien de plus facile. &v[0] te donne un pointeur vers le premier élément de ton vecteur, ce qui est donc la même chose qu'avec un tableau.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [STL] déclaration et manipulation de std::vector
    Par archer dans le forum SL & STL
    Réponses: 3
    Dernier message: 04/11/2007, 21h56
  2. [STL]std::vector<?> pointeur problème
    Par Vincent157 dans le forum SL & STL
    Réponses: 13
    Dernier message: 04/07/2007, 10h21
  3. STL, std::vector et SSE2
    Par mat087 dans le forum SL & STL
    Réponses: 9
    Dernier message: 24/03/2007, 23h04
  4. tri sur std::vector<std::pair<int, float> >
    Par b4u dans le forum SL & STL
    Réponses: 15
    Dernier message: 01/10/2006, 09h19
  5. Sauvegarde std::vector dans un .ini
    Par mick74 dans le forum MFC
    Réponses: 2
    Dernier message: 12/05/2004, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo