begin process at 2012 05 30 19:08:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

Trier une std::map


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Trier une std::map

samedi 3 septembre 2005 à 20:26:49 | Trier une std::map

simtiers

Salut !

voilà, j'ai une classe CPlayer avec une surcharge de l'operateur < (posY est une variable int private) :
bool CPlayer::operator<( CPlayer* player )
{
    if( posY < player->getPosY() )
        return true;
   
    return false;
}

J'utiliser une std::map pour ranger tous mes pointeurs vers un objet CPlayer.
Il faudrait que la map classe les joueurs en fonction de leur position Y (c'est pourquoi l'operateur < ne vérifie que cette coordonée)

Le problème est que je ne sais pas comment faire : je n'arrive pas à utiliser la méthode sort de std::algorithm
Si qq'1 avait une idée, ce serait sympa de me la donner

Merci

samedi 3 septembre 2005 à 20:43:39 | Re : Trier une std::map

vecchio56

Administrateur CodeS-SourceS
Une map est toujours triée. C'est à l'insertion que l'opérateur < est utilisé, pour insérer l'élément au bon endroit
samedi 3 septembre 2005 à 20:44:32 | Re : Trier une std::map

vecchio56

Administrateur CodeS-SourceS
Au fait, ceci sera plus joli ;)

bool CPlayer::operator<( CPlayer* player )
{
  return posY < player->getPosY();
}
samedi 3 septembre 2005 à 20:45:33 | Re : Trier une std::map

simtiers

Y'a t il un moyen de trier la map à un moment voulu ?
En fait, elle est trier dès qu'il y a un mouvement => c'est pour l'ordre d'affichage pour eviter les erreurs de chevauchement.

samedi 3 septembre 2005 à 20:48:06 | Re : Trier une std::map

vecchio56

Administrateur CodeS-SourceS
Tu es sur que ca marche ton truc? Comme tu utilises des pointeurs, je suis pas sur que operator< sera bien utilisé. Je teste ca
samedi 3 septembre 2005 à 20:49:14 | Re : Trier une std::map

simtiers

en fait, pour récupérer le pointeur à partir de l'iterateur, je fais ça :

for( std::map<std::string,CPlayer*>::iterator it = pointersMap.begin();
            it != pointersMap.end(); it++ )
    {
        CPlayer* tempPointer = (*it).second;
        if( tempPointer != NULL )
            tempPointer->render();
    }

samedi 3 septembre 2005 à 20:56:20 | Re : Trier une std::map

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
C'est une map<std::string, CPlayer*>

Dans ce cas, la map sera triée selon la string, donc tu n'y est pas
Pour que ce soit trié selon le CPlayer, tu dois avoir une
map<CPlayer, std::string>
samedi 3 septembre 2005 à 20:57:52 | Re : Trier une std::map

simtiers

ça va être chaud à changer, mais bon, si on n'a pas le choix.....
Merci de m'aider vecchio

samedi 3 septembre 2005 à 21:01:32 | Re : Trier une std::map

vecchio56

Administrateur CodeS-SourceS
Non on a pas le choix ;)
Attention, il faut CPlayer, pas CPlayer*!!
samedi 3 septembre 2005 à 21:11:39 | Re : Trier une std::map

simtiers

J'ai juste un pb : le string est l'identifiant du joueur
J'accède au pointeur CPlayer* via cet identifiant mais l'operateur [] de map ne marche qu'avec la clé (ce qui est logique)
Donc si je fais map<CPlayer, string>, je perd l'interet d'utiliser map...

Sinon, j'utilise un vector<CPlayer*>, et je le trie à partir d'une classe différente, surchargeant l'operateur <(Cplayer*, Cplayer*)

Qu'est-ce que tu en penses ?


1 2

Cette discussion est classée dans : classe, trier, map, std, cplayer


Répondre à ce message

Sujets en rapport avec ce message

Récupérer un évènement [ par darsh99 ] Bonjour,voilà j'ai créé une classe qui n'est dérivée de rien du tout, est-il possible de lui faire récupérer un évènement ?L'évènement étant généré pa incompatibilité 'std' et 'friend' [ par cabieces ] CABECOUJ'ai définit une fonction amie, celle ci doit donc pouvoir accéder aux champs privée de la classe. Ceci marche trés bien sauf quand la classe u Utilisation de std::map avec le type void * [ par toast3r ] Bonjour, J'utilise un tableau associatif, map et j'ai un problème au niveau de la récuperation des valeurs, voici le code que j'ai actuellement : # algo search_n sur un std::map !!!!!! [ par gege1024 ] je voudrais rechercher le nb d'occurence d'une valeur dans un std::mapje le fait pour un std::vector, c'est tout bon, mais je me demande pourquoi j'ar comment inclure un conteneur dans une classe [ par kharrat ] Salut,Je cherche désespérément à créer une classe qui a un conteneur map pour faire un carnet d'adresse (je m'amuse comme je peux...) en C++.Le compil STD::map [ par noSnoR ] En codant j'ai eu besoin de créer une map telle que :std::map Sufs;Il me semble donc qu'il n'y a pas de problème de syntaxe... Seulement, voici ce que C'est ça un template ??? [ par wismerhill__ ] Bonjour, j'ai un probleme que je pense etre simple mais bon ...J'ai une classe A dont un attribut est actuelement un std::vectorUne classe B mere de C Opérateur de comparaison dans une classe générique [ par benjiiim94 ] Bonjour, Je crois que pas mal d'infos sont dans le titre, il ne manque plus que la source de la classe : #pragma once #include "StdAfx.h" using n Problème classe [ par krokro6 ] Bonjour, voici mon problème: J'ai deux classe, une classe A et une classe B: class A { public : A(); virtual ~A(); int Pos STL map et plusieurs types de valeurs ? [ par RV2931 ] Bonjour à tous,J'ai découvert récemment les STL C++ car je souhaite retrouver un outils permettant de retrouver la puissance et la flexibilité des tab


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales