Bonjour a tous et a toutes,
J'utilise les multimaps pour stocker un id d'objet, sous forme d'int, et un objet meme.
Mon souci est que j'ai une fonction (getOptionDef), qui permet de naviguer dans la multimap selon l'ID _ET_ l'objet optiondef, et une fonction qui doit supprimer l'objet stocke dans cette multimap.
Code : Sélectionner tout - Visualiser dans une fenêtre à part typedef std::multimap<int, optiondef *> ioptmmap;
La fonction getOptionDef() retourne un pointeur vers un objet, et pour ne pas reprendre le code, je voulais savoir si le fait de supprimer l'objet avec un delete n'invaliderait pas la multimap contenant les objets.
Pourrais-je toujours naviguer dans la multimap si l'un des objets stocke n'est plus valide ? Puis-je mettre cet objet (donc (ioptmmap::iterator)->second) a NULL ?
Fonction getOptiondef
Fonction deleteOptiondef
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 optiondef *optiondefs::getOptiondef(unsigned int const id, const char *vendor) { ioptmap::iterator iter; std::pair<ioptmap::iterator, ioptmap::iterator> codeDefs; codeDefs = this->opts.equal_range(id); for (iter = codeDefs.first;; iter != codeDefs.second; iter++) { if (!strcmp(iter->second->getVendorClass(), vendor)) { return iter->second; } } return NULL; }
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 unsigned int const optiondefs::delOptiondef(unsigned int const id, const char *vendor) { optiondef *opt; opt = this->getOptiondef(id, vendor); delete opt; return 0; }![]()
Partager