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 :

Ordonner à la compilation


Sujet :

C++

  1. #1
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut Ordonner à la compilation
    Bonjour,

    j'aimerais savoir s'il est possible d'ordonner un couple d'entiers à la compilation.

    J'imagine que cela doit être faisable avec une classe de trait mais je ne vois pas comment faire.

    Merci beaucoup!

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Hello

    Si c'est juste un couple d'entier, pas besoin de forcément passer par une classe de traits:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    constexpr int nb1 = 4;
    constexpr int nb2 = 3;
    constexpr std::array<int,2> roger {{ nb1 < nb2 ? nb1 : nb2, nb1 < nb2 ? nb2 : nb1 }};
    On peut effectivement écrire un template si nécessaire. Après si ta question s'applique à C++03... je ne sais pas, il te faut C++11 pour avoir constexpr.
    Find me on github

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    merci pour ta réponse!

    C'est à peu près ce que je veux faire mais on m'a toujours déconseillé d'utiliser ces macros.

    Je pense que c'est faisable en C++03 mais s'il faut C++11 ce n'est pas un problème.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Pour information, je viens de trouver ceci :
    http://www.boost.org/doc/libs/1_43_0...er/minmax.html

    Je suis en train de regarder les sources pour en comprendre le principe.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Comme indiqué précédemment, peut s'inspirer de la fonction static_min de boost :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template< int left, int right >
    struct static_min
    {
      static const int value = (left < right) ? left : right;
    };
    On peut par exemple implémenter une paire ordonnée comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template< int left, int right >
    struct ordered_pair
    {
      static const int min = (left < right) ? left : right;
      static const int max = (left > right) ? left : right;
    };
    Je ne sais pas si on peut faire mieux mais c'est un début.

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    C'est à peu près ce que je veux faire mais on m'a toujours déconseillé d'utiliser ces macros.
    Quelles macros ? Il n'y a pas de macros, c'est justement l'intérêt .

    Citation Envoyé par Aleph69 Voir le message
    Je pense que c'est faisable en C++03 mais s'il faut C++11 ce n'est pas un problème.
    Si tu peux t'en servir, c'est très dommage de t'en priver.
    Find me on github

Discussions similaires

  1. Réponses: 15
    Dernier message: 10/10/2002, 19h19
  2. [Installation] Borland Compiler 5.5 sous XP
    Par Ligey dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 28/09/2002, 22h45
  3. dans le fond, la compilation...
    Par deltapositive dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/09/2002, 12h14
  4. Vitesse de compilation
    Par srvremi dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/07/2002, 16h49
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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