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

Discussion :

Pb insert dans une QHash

  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut Pb insert dans une QHash
    Bien le bonjour,

    J'ai une question concernant les QHash, donc de la biblio Qt, mais je pense que c'est un problème d'ordre général donc non spécifique a Qt, d'ou le fait que je poste ici

    Voila mon souci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QList<QHash<String,String>> ma_liste_de_qhash
     
    ma_liste_de_qhash.value(0).insert(key,value)
    Sachant que la "key" existe déjà, je veux simplement écraser l'ancienne valeur de value par value.

    Mais de cette façon, ça ne fonctionne pas, alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    QList<QHash<String,String>> ma_liste_de_qhash
     
    QHash<String,String> temp = ma_liste_de_qhash.value(0)
    temp.insert(key,value)
    //ma_liste_de_qhash.clear()
    ma_liste_de_qhash.insert(0,temp)

    Avec le "clear" ça rajoute bien la qhash(puisque la table est vide)

    Mais pourquoi ça ne fonctionne pas directement avec un insert au début ? pourquoi suis je oblige de passer par une table temp ?

    Je ne suis pas un pro du C++ donc il doit y avoir une histoire de référence que je n'ai pas très bien capte :/

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Que veux tu dire par "ça ne marche pas" pour le premier cas ?
    En regardant la doc, QList::value renvoie un nouvel objet par défaut s'il n'existe rien à cet index. Le code pourrait donc être valide et remplir une QHash créée à la volée mais référencée par personne si ta liste n'est pas correctement remplie avant.
    Si tu comptais remplir ta liste de cette façon, ce n'est pas bon par contre.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut
    En fait dans ma QHash j'ai un truc du genre <cle,valeur> = <F,T>
    et je voudrais changer T en W.
    Donc je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maqhash.insert("F","W")
    car dans la doc Qt :
    Inserts a new item with the key and a value of value.
    If there is already an item with the key, that item's value is replaced with value.
    Sauf que lorsque je le fais ca ne fonctionne pas, j'ai toujours "T" et pas "W".

    Lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_liste_de_qhash.value(0).insert(key,value)
    Il y a forcement une QHash dans ma QList a l index 0.
    Mais tu sembles me dire que du coup, par la méthode "value(0)" je ne récupérer pas vraiment ma QHash ? C'est ça ?

  4. #4
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Non, ce que je dis c'est que si à l'index 0 de ta liste il n'y a pas de hash existante, tu vas écrire ta valeur "W" mais dans un objet volatile qui sera perdu immédiatement.

    Si tu as bien vérifié qu'il y a un élément à l'index 0, le premier code est logique. Par contre je viens de voir dans la doc que la fonction QList::value renvoie une copie de l'élément et pas une référence.
    En bref tu appelles le insert sur une copie de ta hash, mais cette copie est locale à ton code et les modifs que tu vas faire dessus ne seront pas appliquées sur l'objet réellement présent dans ta liste. L'opérateur [ ] de la liste renvoie bien une référence par contre donc ce code devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_liste_de_qhash.[0].insert(key,value)
    Si l'index 0 n'existe pas, ce coup ci tu auras un plantage par contre.

Discussions similaires

  1. [debutant]insertion dans une BDD
    Par EssaiEncore dans le forum ASP
    Réponses: 7
    Dernier message: 10/02/2005, 14h58
  2. INTERBASE 5.5 insertion dans une colonne BLOB
    Par mariustrezor dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/10/2004, 18h06
  3. Extraction d'un .txt et Insertion dans une table
    Par PoPmiSiR dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2004, 19h13
  4. Détection insertion dans une Table
    Par abelman dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/07/2004, 14h24
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

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