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 :

Créer à un Iterator spécifique pour une de mes classes


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut Créer à un Iterator spécifique pour une de mes classes
    Bonjour,

    Je suis entrain de stocker des données complexes ( un tableau à 2 dimensions dont le type des colonnes peut être variable ).
    Je pense faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector < vector < boost::variant > * >
    Bref les données qui seront stockés seront complexes pour laisser l'utilisateur y accéder directement.
    Sachant que ce format pourra peut être varié.

    Pour toutes ces raisons, j'aimerai créer un object de type "Iterator" permettant de naviger dans ces données comme on peut le faire pour un vector normal.

    Mais je ne sais pas comment faire. Quelqu'un aurait une idée de comment faire ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Regarde du côté de Boost.Iterator.
    Mais est-ce vraiment un besoin ? Ca me parait bizarre de vouloir remettre à plat une structure à 2 dimensions ?

  3. #3
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut
    Comment ça "mettre à plat" ?

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Et bien, tu as l'air de vouloir parcourir tous les éléments boost::variant d'un vecteur à l'autre ?

    Sinon, tu as une bonne raison pour que ton premier vecteur soit sur un pointeur de vecteur ? C'est bizarre.

  5. #5
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut
    Sinon, tu as une bonne raison pour que ton premier vecteur soit sur un pointeur de vecteur ? C'est bizarre.
    En fait le truc c'est que j'aimerai bien avoir dans le premier vecteur les colonnes et ensuite, dans le second vecteur le contenu des colonnes.
    Mais il peut y avoir plusieurs millions de valeurs dans ces vecteurs. C'est pour cela j'avais peur que ce soit trop lent lors de la copie pour accéder à une colonne.
    Mais c'est peut être une erreur, une mauvais idée.


    Et bien, tu as l'air de vouloir parcourir tous les éléments boost::variant d'un vecteur à l'autre ?
    En fait mes données vont être organisées par colonne mais je veux que l'utilisateur puisse les lire par ligne en demandant une colonne en particulier.
    Je voudrais donc avec un itérateur qui "pointe" vers un numéro de ligne et ensuite l'utilisateur demande à cet iterateur le nom de la colonne.

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par vanitom Voir le message
    En fait le truc c'est que j'aimerai bien avoir dans le premier vecteur les colonnes et ensuite, dans le second vecteur le contenu des colonnes.
    Mais il peut y avoir plusieurs millions de valeurs dans ces vecteurs. C'est pour cela j'avais peur que ce soit trop lent lors de la copie pour accéder à une colonne.
    Mais c'est peut être une erreur, une mauvais idée.
    Encapsule tes données différemment pour qu'elles ne soient pas 'copiables' et passe les par références quand tu peux.
    Dans le pire des cas, utilise un pointeur intelligent plutôt que de mettre des pointeurs en brut.

    Citation Envoyé par vanitom Voir le message
    En fait mes données vont être organisées par colonne mais je veux que l'utilisateur puisse les lire par ligne en demandant une colonne en particulier.
    Je voudrais donc avec un itérateur qui "pointe" vers un numéro de ligne et ensuite l'utilisateur demande à cet iterateur le nom de la colonne.
    Un itérateur suppose que tu vas parcourir tes éléments. Car, sinon, tu peux utiliser [][] pour accéder tout simplement à un élément.
    Tu peux regarder aussi du côté de Boost.Range.

  7. #7
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Bonjour,

    Citation Envoyé par vanitom Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector < vector < boost::variant > * >
    Ceci n'est pas un type valide.
    Soit tu connais les différents types et ils sont en nombre fini, auquel cas c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector < vector < boost::variant < T1, ..., Tn > > >  mon_vecteur_de_vecteur_de_variant;
    (oui, j'ai enlevé le pointeur car je ne vois pas pourquoi tu en aurais besoin, à toi de nous dire éventuellement)
    Soit tu ne sais pas tellement à l'avance ou alors il y a nombre de type possible arbitraire, auquel cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector < vector < boost::any > > mon_vecteur_de_vecteur_de_any;
    Mais sinon, +1 pour Boost.Range qui peut s'avérer intéressant.

Discussions similaires

  1. [W3C] Créer des liens chapitres pour une vidéo
    Par Xann_71 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 27/08/2007, 13h21
  2. créer un lien dynamique pour une fomule SI à partir du code
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2007, 16h13
  3. Script: créer un rép. virtuel pour une redirection d'URL
    Par GentooGeek dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 06/10/2006, 18h08
  4. Mapping spécifique pour une action spécifique
    Par santana2006 dans le forum Struts 1
    Réponses: 8
    Dernier message: 04/08/2006, 18h41
  5. Protocole spécifique pour une appli client/serveur
    Par SteelBox dans le forum Développement
    Réponses: 2
    Dernier message: 17/12/2004, 11h20

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