Bonjour a tous et a toutes,

J'utilise les multimaps pour stocker un id d'objet, sous forme d'int, et un objet meme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
typedef std::multimap<int, optiondef *> ioptmmap;
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.

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
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;
}
Fonction deleteOptiondef
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;
}
Merci d'avance