IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

STL et multimaps: la suppression


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut STL et multimaps: la suppression
    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

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Citation Envoyé par NaeiKinDus Voir le message
    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 ?
    Je ne sais pas ce que dit la norme à ce sujet, mais il est possible que cela soit un comportement indéfini. Dans le doute mieux vaut le mettre à NULL, c'est de toute façon plus propre.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Ton conteneur contient des pointeurs. Que des pointeurs pointent sur un truc particulier ou sur n'importe quoi, ton conteneur s'en fout.

    Par ailleurs, il n'est généralement pas une bonne idée de faire un conteneur de pointeurs, car le conteneur devient inepte à en gérer la durée de vie de manière automatique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [STL] erreur compilation, suppression dans vecteur
    Par ZaaN dans le forum SL & STL
    Réponses: 1
    Dernier message: 03/07/2007, 16h32
  2. [STL] multimap : 2e question
    Par Olivier14 dans le forum SL & STL
    Réponses: 3
    Dernier message: 15/05/2007, 10h20
  3. [STL] erase et multimap
    Par Olivier14 dans le forum SL & STL
    Réponses: 3
    Dernier message: 14/05/2007, 16h16
  4. STL Multimap et Objet en cle
    Par radium dans le forum SL & STL
    Réponses: 2
    Dernier message: 18/01/2006, 13h58
  5. STL : utilisation d'une multimap
    Par romeo9423 dans le forum SL & STL
    Réponses: 7
    Dernier message: 18/08/2005, 07h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo