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

C++ Discussion :

Stocker des objets


Sujet :

C++

  1. #1
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut Stocker des objets
    Bonjour,

    je souhaite stocker plusieurs objets mais je ne sais pas comment faire.
    J'ai vu qu'il existait les templates mais je ne suis pas sur d'avoir tout compris.

    En fait je souhaite stocker le contenu d'un fichier ini.

    Amicalement,
    Mosco

  2. #2
    Membre émérite Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Par défaut
    tu veux stocker dans koi??

  3. #3
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    je ne connais pas tous les choix possibles mais il me semble que "map" sait le faire.
    Le problème c'est que je ne comprends pas tout (c'est assez nouveau pour moi ).
    J'ai regardé dans la FAQ mais cela m'aide pas plus.

  4. #4
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    Il faut que tu nous dises ce que tu veux stocker, et comment tu veux y accéder.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MoscoBlade
    je ne connais pas tous les choix possibles mais il me semble que "map" sait le faire.
    Le problème c'est que je ne comprends pas tout (c'est assez nouveau pour moi ).
    J'ai regardé dans la FAQ mais cela m'aide pas plus.
    le choix du conteneur le plus approprié va dépendre tres directement de l'utilisation que tu vas en faire.
    a toi de savoir si déja tu veux une liste brute/triée, ou un tableau associatif.

    si tu veux un tableau associatif, std::map<> te permet d'avoir à une clé unique une valeur associée.

    si tu veux une liste, a voir quelle utilisation tu vas en faire. plutot FIFO ou LIFO ? ensuite, tes acces seront plutot "random" ou plutot "toujours a la fin/au début" de cette liste ? tout ceci permettra de choisir entre std::vector<>, std::list<>, std::deque<>...

  6. #6
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    je souhaite stocké des classes CTest.
    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
     
    class CTest
    {
    public :
    CTest(void);
    ~CTest(void);
     
    public :
    CString m_name;
    CString m_str1;
    CString m_str2;
    CString m_str3;
    CString m_str4;
    int m_nbRecord;
    }
    j'obterais plus pour un tableau associatif.
    Sachant que je vais lire un fichier INI puis je stocke ce que j'ai lu (sachant que cela ne peut être que ma classe CTest).
    Puis je prends mon stockage et je les insère dans une listBox et d'autres composants.

    Je sais pas si c'est bien plus clair ? si je fais le bon choix ?

    Mosco.

  7. #7
    Invité
    Invité(e)
    Par défaut
    juste par curiosité, pourquoi tu t'orientes vers une map ?
    tu associerais quoi avec quoi ?

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    Stocker ?
    - en mémoire -> les divers conteneurs standard font très bien l'affaire
    - sur disque -> on parle de sérialization ; diverses solutions dont boost.serialize

    Pour les fichiers de conf et autres options, j'aime bien boost.program_option -- la faute aux bindings entre variables et options comme en perl.
    Pour le format .ini plus précisément, il faudra peut être un peu feinter avec boost.program_option
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #9
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    Citation Envoyé par toxcct
    juste par curiosité, pourquoi tu t'orientes vers une map ?
    tu associerais quoi avec quoi ?
    Je m'oriente vers une map car je pourrais faire des recherches par la clé.
    Je compte associé le nom correspondant à ma classe et ma classe.

    Vous pensez que je fais un mauvais choix ?

  10. #10
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    Citation Envoyé par Luc Hermitte
    Stocker ?
    - en mémoire -> les divers conteneurs standard font très bien l'affaire
    je compte stocké en mémoire.

    Peux tu me donner des exemples des divers conteneurs que tu parles ?

  11. #11
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    En fait après mure réflexion je vais choisir la list<> car je n'ai pas vraiment besoin d'avoir une clef.

    En fait je n'avais pas compris et assimilé les STL.

    Je mettrais Résolu une fois mon travail terminé.
    Je vous remercie pour tout.

    Mosco.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MoscoBlade
    En fait après mure réflexion je vais choisir la list<> .
    je te conseille std::vector<> si tu prends un conteneur pour en faire un peu n'importe quoi. c'est encore le template qui offre les meilleures performance en ce sens

  13. #13
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    ok je vais regarder suivant mon utilité.

    Merci.

  14. #14
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    Autre question ?


    Mon appli est composé d'une DLL et d'un EXE.
    Dans ma DLL je stocke mes infos ensuite je les utilises dans mon EXE.

    Dans ma DLL j'ai la méthode suivante :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    list<> CIniFile::ReadAllTest()
    {
    	list<CTest> listTest;
    	wchar_t *szStr= new wchar_t[1000];
    	CString nameSection = _T("");
    	CTest test;
     
    	int nSizeRet= GetPrivateProfileSectionNames( szStr, 1000, m_IniFile);
     
    	for (int i=0;i<nSizeRet;i++)
    	{
    		if (szStr[i] == 0)
    		{
    			if (nameSection != _T("TEST"))
    			{
    				test= GetProductInformation(nameSection);
    				if (test.m_Code != _T(""))
    					listTest.push_back(test);
    			}
    			nameSection = _T("");
    		}
    		else
    		{
    			nameSection+= szStr[i];
    		}
    	}
    	delete szStr;
    // return (....);
    }
    J'ai un doute sur ce que je dois retourner ? Sachant que ce doit être listTest.
    Est ce que la déclaration de ma méthode est correct ?

  15. #15
    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
    Est ce que la déclaration de ma méthode est correct ?
    Non, il manque le paramètre du template pour que ça fasse un type.

  16. #16
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    list<CTest> CIniFile::ReadAllTest()
    {
    	list<CTest> listTest;
    	wchar_t *szStr= new wchar_t[1000];
    	CString nameSection = _T("");
    	CTest test;
     
    	int nSizeRet= GetPrivateProfileSectionNames( szStr, 1000, m_IniFile);
     
    	for (int i=0;i<nSizeRet;i++)
    	{
    		if (szStr[i] == 0)
    		{
    			if (nameSection != _T("TEST"))
    			{
    				test= GetProductInformation(nameSection);
    				if (test.m_Code != _T(""))
    					listTest.push_back(test);
    			}
    			nameSection = _T("");
    		}
    		else
    		{
    			nameSection+= szStr[i];
    		}
    	}
    	delete szStr;
            return (listTest);
    }
    Et comme ça va ?

  17. #17
    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
    Ça semble valide.
    Mais bon, autant demander à un compilateur.

  18. #18
    Invité
    Invité(e)
    Par défaut
    retourne list<CTest>

  19. #19
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    Citation Envoyé par toxcct
    retourne list<CTest>
    c'ets pas ce que je fais ?

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MoscoBlade
    c'ets pas ce que je fais ?
    évidemment, maintenant que t'as corrigé ton post

    t'as cru m'avoir, mais t'avais écris list<>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. stocker des objets (class)?
    Par midosone dans le forum Général Java
    Réponses: 3
    Dernier message: 20/05/2008, 23h21
  2. [Python] Est-ce une bonne idée d'utiliser des modules pour stocker des objets ?
    Par Neolander dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 05/04/2008, 14h45
  3. Réponses: 2
    Dernier message: 08/12/2006, 01h20
  4. [Debutant] Stocker des objets dans un tableau à plusieurs indices
    Par Invité dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/09/2006, 18h04
  5. [debutant][JNI]Stocker des objet pour les rappeler plus tard
    Par Celenor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 28/03/2004, 01h28

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