Problème std::set avec une structure
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'.
Code:
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;
}
}; |
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.
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.
Code:
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);
} |
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...
Merci de l'aide pour vous pourrez m'apporter