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 :

Probleme de list STL et recherche


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut Probleme de list STL et recherche
    Bonjour,
    j'ulitilise la STL pour gérer une liste doublement chainee (list). J'ai besoin de faire une fonction de recherche dans cette liste, je veux donc utiliser la fonction "find(....)". Le probleme est que lorsque je l utilise directement dans le corps de mon main, ca marche bien, par contre, j aimerais creer une fonction indepedante de recherche.
    Mon probleme est que lorsque je passe en argument a une fonction la liste et l element recherché:

    list<SFunctions>::iterator FindInList(list<SFunctions> List, const SFunctions ToFind)

    je veux rechercher dans cette liste Liste l'element ToFind, puis retourner l iterateur sur l'élément trouvé, mais l objet est detruit avant d etre renvoyé.

    Comment faire?

    Merci

  2. #2
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut
    Salut,

    visiblement tu travailles uniquement avec des objets et non pas avec des pointeurs. Tu vas donc avoir un grand nombre de copies dans ton processus. Ensuite est ce que tu cherches un objet qui contient la meme information que ToFind ou bien tu cherches l'iterateur sur l'objet ToFind lui meme ?

    pourrais tu rajouter le code de la fonction stp ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    je recherches l iterateur sur l objet ToFind qui se trouve dans ma liste, car ensuite je dois recuperer des informations dans cet objet

  4. #4
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut
    dans ce cas tu devrais travailler avec les pointeurs et non pas avec des copies.

    mais si tu possede ToFind pour le mettre en parametre pourquoi as tu besoin d'aller le chercher dans la liste ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    ma fonction est:
    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
    16
    list<SFunctions>::iterator FindInList(list<SFunctions> List, const SFunctions ToFind)
    {
    list<SFunctions>::iterator it;
     
     
    	it = find(List.begin(), List.end(), ToFind);
     
    	if(it != List.end())
    	{
    		return ptr;
    	}
    	else 
    	{
    		cout<<"Not found"<<endl;
    	}
    }
    Je recherche l'objet a l interieur de la liste, c est a dire que la liste se cree au debut et ensuite j i besoin d acceder a des elements de la liste via un element de l'objet pour recuperer d autres informations.

  6. #6
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut
    je suis pas sure de comprendre. tu cherches un objet a l'interieur de ta list ou bien un objet a l'interieur d'un objet de la liste ?. de plus le code que tu as marque est faux, ptr n'existe pas tu ne peux donc pas le retourner.

    aussi si ta liste est cree au debut et ne change plus utilise une list<SFunction*> ca t'evitera d'avoir des copies partout.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par flipper203
    list<SFunctions>::iterator FindInList(list<SFunctions> List, const SFunctions ToFind)
    Tu cherches dans uen copie,d onc logiquement l'itérateur ne sera jamais bon. Passe par référence les 2 éléments et ça ira.

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

Discussions similaires

  1. probleme conteneur <list> de la bibliotheque STL
    Par khaledmoez dans le forum C++
    Réponses: 2
    Dernier message: 06/12/2009, 18h48
  2. Probleme fonction sort d'unt list STL
    Par Brouzouf dans le forum Visual C++
    Réponses: 4
    Dernier message: 27/07/2006, 16h54
  3. Probleme de liste STL
    Par flipper203 dans le forum SL & STL
    Réponses: 18
    Dernier message: 17/07/2006, 13h49
  4. un probleme de listing de dossier
    Par bidoo dans le forum Langage
    Réponses: 2
    Dernier message: 01/11/2005, 11h18
  5. Réponses: 8
    Dernier message: 02/04/2004, 17h31

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