begin process at 2012 05 28 22:06:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

comparaison dans une set


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

comparaison dans une set

mercredi 6 décembre 2006 à 11:08:11 | comparaison dans une set

MrKro

Je vous explique,
Je dois débugger une application qui gère de très grosse structure de donnéees, des Nodes. Elle utilise des set de la STL afin de les stocker. Les opérateurs de comparaison sont surchargés {operator< (Nodes)}. Cependant, en passant l'executable dans un profiler, on se rend compte que de nombreux appels à des méthodes de construction et de destruction. Je suppose que ces nombreux appels sont du a de la recopie. En rajoutant une référence au comparateur, plus rien ne compile.

Je suppose donc qu'il est impossible de travailler avec des références sur les opérateurs de comparaison dans la STL, est ce que quelqu'un a deja eut ce genre de problème ou peux confimer ou infirmer mes pensées?

Merci

mercredi 6 décembre 2006 à 21:01:26 | Re : comparaison dans une set

yann_lo_san

Salut, je ne comprend pas quant tu dis une "référence au comparateur"
Par défaut, le set implémente les comparaisons grace au pointeur de fonction key_comp()

class NODE
{
   friend bool operator < (const NODE& n1, const NODE& n2)
   {
      // bla bla
      return true;
   }
};

// Par defaut LESS THAN (utilise operator < du node)
set<NODE> n;
n.key_comp()(node1, node2);
// Si node1 < node2 returne true;

De quelle référence parles-tu ?

mercredi 23 juin 2010 à 18:11:17 | Re : comparaison dans une set

HSylvio

Bonsoir,

je sais que ce message date un peu, mais j'essaie depuis quelques heures d'utiliser un set d'objets.

J'ai redéfini les opérateurs de ce type d'objets, mais j'ai toujours une erreur :

"elCompilo" a écrit

C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xtree(1413) : error C2061: erreur de syntaxe : identificateur '_Wherenode'
1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xtree(1408) : lors de la compilation de la fonction membre '<Inconnu>' de la classe <Inconnu>
1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\set(57) : voir la référence à l'instanciation de la classe modèle 'std::_Tree<_Traits>' en cours de compilation
1> with
1> [
1> _Traits=std::_Tset_traits<SimEvent,std::less<SimEvent>,std::allocator<SimEvent>,false>
1> ]
1> d:\users\housseman\chimiordo\SimEventsList.h(19) : voir la référence à l'instanciation de la classe modèle 'std::set<_Kty>' en cours de compilation
1> with
1> [
1> _Kty=SimEvent
1> ]




Un forum conseille de changer la ligne 1413 de xtree de
new (_Wherenode) _Node(_Larg, _Parg, _Rarg, _Val, _Carg);
je l'ai donc changée pour
_Node _Wherenode(_Larg, _Parg, _Rarg, _Val, _Carg);


Et meme si l'erreur de copil a disparu j'ai (evidamment?) une erreur d'allocation de memoire dès mon premier insert.

Quelqu'un aurait-il un exemple d'utilisation de set d'objets, pour lesquels on doit définir les comparateurs si possible?? (des exemples avec des set<int> y'en a plein $soft.com!!)

Merci d'avance.


Cette discussion est classée dans : set, comparaison, opérateurs, stl


Répondre à ce message

Sujets en rapport avec ce message

string de la STL et comparaison de chaines [ par shenron666 ] Slt, je cherche un moyen de faire une comparaison de 2 chaines déclarées en string et donc en utilisant la stl seulement il n'y a pas de fonction de c Comparaison set - list... [ par messier79 ] BonjourJe dois écrire un programme qui lit un fichier de 10000 entrées sous forme d'objets et effectuer des opérations de tri et de recherche dans ces Utilisation set et multiset [ par messier79 ] BonjourJe cherche un (des) exemple(s) d'utilisation des sets et/ou multisets.Je n'ai pas réussi à en trouver sur le site.Pouvez-vous m'aider ?Merci Sets et Multisets [ par messier79 ] SalutJe dispose d'un set dans lequel je voudrais stocker des Cours (la classe cours est définie dans le fichier adequat).Je lis les informations sur l Set - Remplissage, parcours [ par messier79 ] BonjourJe dispose d'une classe "Cours" avec un attribut "sigle".Je voudrais ajouter des instances de cette classe dans un set trié par Sigle. set > ls Comparaison de chaine [ par anek971 ] Bonjour a tous,ben enfaite je c ca parait bete mais j'ai un agneda a faire j'arrive a faire tt les fontcions sauf la comparaison de chaines,bah enfait Trier un set, ca marche pas!!! besoin d'aide svp... [ par jamirc ] j'ai un set de pointeur Etudiant,je veux en faire le tri par le type du programme et ca marche pas.Voici les attributs dans mon Etudiant.hprotected: comparaison de 2 images [ par eivilo ] bonjour,j'écris parce que je suis une ***** en programmation, et je dois faire un programme qui compare deux images(en niveau de gris) : une image de Loader une image [ par DjGonk ] Slt je voudrais loader une image de mes resouces dans un controle static: mon code c'est:CStatic *set=(CStatic*) (GetDlgItem(IDC_STATIC_COUVL));CRect


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,281 sec (3)

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