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

SL & STL C++ Discussion :

Optionnaliser une fonction de tri


Sujet :

SL & STL C++

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut Optionnaliser une fonction de tri
    Salut,

    J'ai un vecteur qui contient des objets "point" ayant plusieurs coordonnées spatiales. J'ai besoin de trier ce vecteur dans l'ordre croissant de la projection de ses points sur un axe donné. C'est pourquoi j'aimerais pouvoir définir une fonction de tri (pour la fonction std::sort) à laquelle j'indique l'axe de projection. Le problème est que la fonction de tri a un prototype imposé f(const point&, const point&) donc on ne peut pas lui donner d'argument supplémentaire.

    Je vois un moyen pas très élégant de contourner le problème qui consiste à avoir une variable globale qui indique l'axe de tri à la fonction de tri, mais j'espère que vous pourrez me donner quelque chose de mieux.

    Merci !

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Jette un oeil à cette entrée de la FAQ et en particulier aux foncteurs (par ex SortByNumber).
    Tu peux donc fournir n'importe quelle instance d'une classe qui a un operator() en tant que foncteur pour la comparaison lors du tri, ce qui permet de stocker des "arguments supplémentaires" en données membres.

    MAT.

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Salut,

    Jette un oeil à cette entrée de la FAQ et en particulier aux foncteurs (par ex SortByNumber).
    Tu peux donc fournir n'importe quelle instance d'une classe qui a un operator() en tant que foncteur pour la comparaison lors du tri, ce qui permet de stocker des "arguments supplémentaires" en données membres.

    MAT.
    Merci, c'est effectivement pas mal mais ça revient grosso modo à la même chose que d'avoir un attribut de classe statique utilisé dans une méthode de tri statique elle aussi.

    Juste par curiosité, si je voulais optionaliser la structure sortByNumber avec un paramètre entier serait-il convenable d'écrire pour la structure un constructeur sortByNumber(int i) qui a pour effet de stocker i dans une donnée membre puis de passer comme fonction de tri "sortByNumber(monParamtreEntier)()" au lieu de "sortByNumber()" ???

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par tnarol Voir le message
    ça revient grosso modo à la même chose que d'avoir un attribut de classe statique utilisé dans une méthode de tri statique elle aussi.
    Pas vraiment puisque une donnée membre statique est partagée entre toutes les instances de la classe, c'est pas très propre comme méthode...

    Citation Envoyé par tnarol Voir le message
    serait-il convenable d'écrire pour la structure un constructeur sortByNumber(int i) qui a pour effet de stocker i dans une donnée membre puis de passer comme fonction de tri "sortByNumber(monParamtreEntier)()" au lieu de "sortByNumber()" ???
    Oui c'est la méthode préconisée.

    MAT.

Discussions similaires

  1. Une fonction de TRI par Formules dans le tableur.
    Par NVCfrm dans le forum Contribuez
    Réponses: 1
    Dernier message: 04/07/2013, 03h58
  2. Recherche une fonction de tri
    Par tidou95220 dans le forum Langage
    Réponses: 4
    Dernier message: 15/02/2012, 03h56
  3. [Dojo] Définir une fonction de tri
    Par diegon dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 17/03/2009, 10h18
  4. Ajouter une fonction de tri
    Par rafmos dans le forum C++
    Réponses: 3
    Dernier message: 10/09/2007, 18h46
  5. Réponses: 3
    Dernier message: 13/12/2006, 17h01

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