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 :

Equivalent de std::pair mais pour trois valeurs


Sujet :

SL & STL C++

  1. #1
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut Equivalent de std::pair mais pour trois valeurs
    Bonjour,

    Dans mon programme, j'ai une grille 3D. Chacune des ses cases (cubes) est repérée par un trio <i,j,k>. Existe-t-il un objet équivalent à std::pair mais gérant trois indexes au lieu de deux, svp?

    Cordialement,
    Rodrigue
    Rodrigue

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il y a bien boost::tuple, mais je pense que pour ce genre de choses, un struct coor {int i, int j, int k}; et plutôt plus simple...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    tu peux aussi créer ton propre type,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    template< typename First, typename Second, typename Third > struct triplet {
        typedef First first;
        typedef Second second;
        typedef Third third;
    };
    ensuite, tu peux écrire ton propre "make_triplet" si tu veux
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 40
    Points
    40
    Par défaut
    Tout dépend de ce que tu veux en faire. Si tu veux utiliser un itérateur, ça va pas être pratique une struct

  5. #5
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Il y a bien boost::tuple, mais je pense que pour ce genre de choses, un struct coor {int i, int j, int k}; et plutôt plus simple...
    Ne réinvente pas la roue. Utilise boost::tuple, qui pourrait bien devenir une partie du standard C++...
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Que boost::tuple fasse probablement partie du prochain standard, oui.
    Qu'il ne faille pas réinventer boost::tuple, oui.
    Que boost::tuple soit une abstraction appropriée pour le cas cité, c'est là que j'ai un gros doute.

    La structure que je propose a l'avantage de nommer ses différents membres, ce qui la rend bien plus simple d'utilisation que boost::tuple. Ce dernier me semble plus indiqué pour écrire du code générique, mais pour du code applicatif, ça me semble inutilement lourd. Ou alors, propose pour la prochaine version du C++ de supprimer le mot clef struct, et de ne permettre que des tuples
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Points : 307
    Points
    307
    Par défaut
    Dans le cas precis des coordonnees d'un point, si on peut etre amene a manipuler des points de dimensions differentes, j'aurais plutot tendance a utiliser boost::array pour un truc du genre (code joyeusement inspire de celui d'ITK)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    template<unsigned int Dimension, typename TCoordType>
    struct Point
    {
        boost::array<TCoordType, Dimension> data;
        TCoordType operator[](unsigned int x) const;
        TCoordType & operator[](unsigned int x);
    }
    voire un simple tableau.

    Utiliser boost::tuple me parait une mauvaise idee : l'utilisation de coordonnees sous entend generalement des operations geometriques qui ne sont pas presentes dans boost::tuple.

Discussions similaires

  1. Equivalent de TOAD oracle mais pour Postgre ?
    Par vingsxr dans le forum Outils
    Réponses: 3
    Dernier message: 25/09/2012, 16h37
  2. Equivalent de TOAD oracle mais pour Postgre ?
    Par vingsxr dans le forum Administration
    Réponses: 7
    Dernier message: 07/09/2009, 10h06
  3. Equivalent de TOAD Oracle mais pour Postgre ?
    Par vingsxr dans le forum Toad
    Réponses: 3
    Dernier message: 08/04/2009, 20h14
  4. [POO] Equivalent de getElementById mais pour une class ?
    Par boutmos dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 29/04/2008, 10h19
  5. Equivalent du L en C pour les valeurs hexa
    Par Rustine dans le forum Delphi
    Réponses: 2
    Dernier message: 11/03/2007, 13h05

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