• [^] # Re: std::map

    Posté par (site web personnel) . En réponse au message Un dictionnaire ... comment faire ?. Évalué à 1.

    Merci pour la doc ... Mais je n'arrive pas a l'utiliser ni a bien la comprendre. Par exemple, j'aimerais bien savoir sur quelle page je peux trouver toutes les méthodes associées à un iterator ... ou alors la description précise de la méthode find(). Pour la méthode find, j'ai trouvé un lien vers AssociativeContainer.html qui explique un peu plus en détail. Mais il y a alors une référence à a.end() ... et je n'ai pas réussi a en trouver la description. Peut être que j'ai les yeux bouchés ... mais j'ai vraimment du mal a utiliser cette doc. Sinon, finalkement je vais utiliser les std::string ... c'est sans doute plus simple. Voila ce que j'ai fait : J'espère ne pas avoir fait trop d'erreurs ... c'est surtout pour le childred.erase(name) que je ne suis pas sure. Il ne faut pas qu'il supprime l'objet référencé.
    class object {
    public:
    	std::string	attach(const std::string &name, WoT3D::object* object){
    		if(!this->children.count(name)){
    			// la clef n'existe pas
    			this->children[name]=object;
    			return name;
    		}else{
    			int i = 1;
    			while(this->children.count(name << i)){
    				i++;
    			}
    			this->children[name << i]=object;
    			return (name << i);
    		}
    	}
    		WoT3D::object*	detach(const std::string &name){
    		if(!this->children.count(name))
    			return NULL;
    		WoT3D::object*	object_returned;
    		object_returned = this->children[name];
    		this->children.erase(name);
    		return object_returned;
    	}
    	void		remove(const std::string &name){
    		if(this->children.count(name)){
    			delete this->children[name];
    			this->children.erase(name);
    		}
    	}
    	// ...
    private:
    	std::map<std::string, WoT3D::object*> children;
    };
    
    Merci tout de même.