Bonjour à tous,
j'ai actuellement un petit problème avec la librairie STL, concernant la classe std::set.
Je veux créer un ensemble de structures, dont l'ordre est donné par un élément de la structure.
Je pense que mon code sera plus parlant :
Voila la définition de la structure en question, avec la fonction de comparaison qui compare uniquement le champ 'etiq'.
Ce que je veux c'est : a chaque fois que je rencontre une etiquette 'etiq', je veux pouvoir vérifier que si elle est déjà dans une des structures présentes dans l'ensemble.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 typedef struct{ int etiq; set<string> identites; }hash_table; struct H_Compare // fonction de comparaison des table de hachage par rapport à l'etiquette { bool operator()(hash_table H1, hash_table H2) { return H1.etiq - H2.etiq; } };
Dans le cas ou l'etiquette existe, je dois modifier le champ 'identities' correspondant à cette structure dans l'ensemble.
Dans le cas contraire, je dois ajouter à cette ensemble une nouvelle structure contenant l'étiquette rencontrée.
J'espère que je m'exprime assez clairement...
Voila ce que j'ai écrit pour l'instant.
Mais je vous avouerais que j'ai un doute énorme sur le bon fonctionnement de ce que j'ai écrit, sans oublier que je ne vois pas comment faire lorsque l'étiquette est trouvée...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 hash_table Hash; set<hash_table, H_Compare> DB; string str; // éléments à insérer dans le champ 'identities' strncpy(tmp, file_cur->d_name, 7); tmp[7] = '\0'; str.assign(tmp); if(DB.find(etiq) == DB.end()) //si l'etiquette n'existe pas { Hash.etiq = etiq; (Hash.identites).insert(str); DB.insert(Hash); }
Merci de l'aide pour vous pourrez m'apporter
Partager