Salut !
Je me demandais s'il était possible d'utiliser un couple de float (ou int) en clé d'une map et comment s'y prendre ??
genre :
typedef map< (float, float), struct...> matchedPairs;
voilà, merci de m'aider, je suis perdu !
@+
Kmouille
Salut !
Je me demandais s'il était possible d'utiliser un couple de float (ou int) en clé d'une map et comment s'y prendre ??
genre :
typedef map< (float, float), struct...> matchedPairs;
voilà, merci de m'aider, je suis perdu !
@+
Kmouille
std::pair<float, float> pour la paire de floats. Par contre je ne pense pas que std::less ou l'opérateur < soient définis pour std::pair, tu auras donc sans doute à écrire le premier (ou un foncteur perso que tu passeras en 3ème paramètre template de ta map).
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
C'est mieux de définir son propre foncteur, non ?
Pour ce cas-là, sans doute oui. La comparaison entre deux pair<float, float> ne sera sûrement pas la même d'une application à l'autre, donc inutile d'aller trifouiller dans le namespace std.C'est mieux de définir son propre foncteur, non ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Merci !!! c'est bon, je viens en effet de reussir... je n'ai pas d'avertissement pour la fonction de comparaison, il doit y en avoir une deja faite.
Par contre, je me demande si la map est bien adaptée à mon algorithme, (j'ai consulté le tableau pour aider à choisir les conteneurs) mais voilà, l'algorithme que j'essaie de programmer me pose un probleme, le voici :
if (float_x, *) and (*,float_y) are not in map
then map.insert((float_x, float_y),...)
où * est un couple quelconque !
Je ne vois pas trop comment je peux parcourir les clés de la map et y appliquer ce test.
si quelqu'un comprend déjà c'est bien, et si vous pouviez m'aider c'est encore mieux![]()
@+
Kmouille
qui dit float dit calcul, et qui dit calcul et float dit imprécision des calculs. Personellement, j'hésiterais à prendre un float comme clef de map ou de n'importe quoi d'autre, car je n'en sais clairement pas assez sur les nombres en virgule flottante pour être assuré que le code suivant marche (et d'ailleurs, je pense qu'il ne marche pas) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 map<float, int> m; m[1.0f] = 1; assert(m[0.1f+0.1f+0.1f+0.1f+0.1f+0.1f+0.1f+0.1f+0.1f+0.1f] == 1);
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.
Partager