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 :

Problèmes syntaxiques avec des itérateurs


Sujet :

SL & STL C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 18
    Par défaut Problèmes syntaxiques avec des itérateurs
    Bonjour,

    J'ai un problème concernant les itérateurs :

    Lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       vector<vector<Slot> >::iterator i;
     
       for (i = matrice.begin(); i != matrice.end(); ++i)
       {...}
    Pour parcourir mon vecteur de vecteur matrice il n'y a aucun probleme, par contre si j'essaye d'acceder directement a un élément par exemple comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       vector<vector<Slot> >::iterator i = matrice.begin() + 4;
    le compilateur me vomi dessus et je ne comprend pas pourquoi j'ai vu cela dans plusieurs tutoriels .

    Comment puis-je faire pour accéder directement a l'élément voulu en utilisant un itérateur ?

    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,
    Seul les itérateurs de catégorie "Random Access" supportent les opérateurs arithmétiques type '+' ... ce qui est le cas de std::vector::iterator
    Et je n'ai effectivement pas de problème avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <vector>
     
    int main()
    {
        std::vector<std::vector<int> > matrice;
        std::vector<std::vector<int> >::iterator it = matrice.begin() + 2;
     
        return 0;
    }
    Des précisions sur les erreurs que te renvoi le compilateur seraient les bienvenues.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 18
    Par défaut
    Bonjour et merci,



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     error: conversion from ‘__gnu_cxx::__normal_iterator<const std::vector<Slot, std::allocator<Slot> >*, std::vector<std::vector<Slot, std::allocator<Slot> >, std::allocator<std::vector<Slot, std::allocator<Slot> > > > >’ to non-scalar type ‘__gnu_cxx::__normal_iterator<std::vector<Slot, std::allocator<Slot> >*, std::vector<std::vector<Slot, std::allocator<Slot> >, std::allocator<std::vector<Slot, std::allocator<Slot> > > > >’ requested
    Et ma fonction jusqu'a présent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Pawn Game::getPawn(int c, int l) const
    {
     
       vector<vector<Slot> >::iterator i = matrice.begin() + c;
     
       ...
     
    }

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Nihi777 Voir le message
    Bonjour et merci,



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     error: conversion from ‘__gnu_cxx::__normal_iterator<const std::vector<Slot, std::allocator<Slot> >*, std::vector<std::vector<Slot, std::allocator<Slot> >, std::allocator<std::vector<Slot, std::allocator<Slot> > > > >’ to non-scalar type ‘__gnu_cxx::__normal_iterator<std::vector<Slot, std::allocator<Slot> >*, std::vector<std::vector<Slot, std::allocator<Slot> >, std::allocator<std::vector<Slot, std::allocator<Slot> > > > >’ requested
    Il te dit que matrice est const ici, il faut donc utiliser un const_iterator et non un iterator.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 18
    Par défaut
    En effet cela fonctionne je ne savais même pas que ça existait merci beaucoup

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

Discussions similaires

  1. Définir un extrait de vecteur avec des itérateurs.
    Par valefor dans le forum Débuter
    Réponses: 5
    Dernier message: 24/01/2011, 19h18
  2. problème syntaxique avec la réecriture d'url
    Par Olivier Regnier dans le forum Langage
    Réponses: 4
    Dernier message: 07/11/2007, 11h48
  3. problème simple avec des "if"
    Par johnburton54 dans le forum VBA Access
    Réponses: 11
    Dernier message: 07/06/2007, 10h24
  4. problème de avec des boutons
    Par babap1 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 04/01/2007, 09h13
  5. Problème simple avec des checkbox
    Par nanor21 dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2006, 00h26

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