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
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
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.
tu peux aussi créer ton propre type,
ensuite, tu peux écrire ton propre "make_triplet" si tu veux
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; };
Nul ne peut mieux connaitre la connaissance qu'elle-même.
Tout dépend de ce que tu veux en faire. Si tu veux utiliser un itérateur, ça va pas être pratique une struct
Ne réinvente pas la roue. Utilise boost::tuple, qui pourrait bien devenir une partie du standard C++...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...
En premier lieu, utilisez un moteur de recherche.
En second lieu, postez sur le forum adéquat !
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.
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)
voire un simple tableau.
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); }
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager