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 :

error: ‘i1’ does not name a type


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Points : 75
    Points
    75
    Par défaut error: ‘i1’ does not name a type
    Bonjour,

    je rencontre un problème que je n'arrive pas du tout à replacer dans son contexte ... J'essaie de faire quelque chose à priori assez simple : un vecteur multi dimensionnel et un iterateur pour boucler dessus.

    Y voyez-vous une erreur ?

    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
    31
    32
    33
    34
    35
    36
    #include <iostream>
    #include <vector>
    #include <string>
     
    using namespace std;
    using std::vector;
     
    #define HEIGHT 10
    #define WIDTH 10
     
    int main() {
     
        vector<vector<string> > matrix;
        vector<int>::iterator i1;
        vector<int>::iterator i2;
     
        cout << "Done" << endl;
     
        matrix.resize(HEIGHT);
        for (int i = 0; i < HEIGHT; ++i) {
            matrix[i].resize(WIDTH);
        }
     
        matrix[0][0] = "Hello";
     
        // Iteration
        cout << matrix[0][0] << endl;
        for (auto i1 = matrix.begin(); i1 != matrix.end(); ++i1) {
            for (auto i2 = i1->begin(); i2 != i1->end(); ++i2) {
                std::cout << *i2;
            }
        }
     
     
        return 0;
    }
    Merci !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Coucou !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vector<int>::iterator i1;
    vector<int>::iterator i2;
    Ici tu spécifies que i1 et i2 sont des itérateurs sur des vecteurs d'entiers, tandis que :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    auto i1 = matrix.begin()
    là tu fais de la redéclaration.

    C'est comme si je faisais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int test;
    string test;
    ce qui est rejeté par le compilateur, car la variable "test" est déjà déclarée.

    Je te recommande de supprimer les:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vector<int>::iterator i1;
    vector<int>::iterator i2;
    ou bien de mettre:

    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
    31
    32
    33
    34
    #include <iostream>
    #include <vector>
    #include <string>
     
    using namespace std;
    using std::vector;
     
    #define HEIGHT 10
    #define WIDTH 10
     
    int main() {
     
        vector<vector<string> > matrix;
     
        cout << "Done" << endl;
     
        matrix.resize(HEIGHT);
        for (int i = 0; i < HEIGHT; ++i) {
            matrix[i].resize(WIDTH);
        }
     
        matrix[0][0] = "Hello";
     
        // Iteration
        cout << matrix[0][0] << endl;
        for (vector<vector<string> >::iterator i1 = matrix.begin(); i1 != matrix.end(); ++i1) {
            for (vector<string>::iterator i2 = i1->begin(); i2 != i1->end(); ++i2) {
                std::cout << *i2;
            }
        }
     
     
        return 0;
    }

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Points : 75
    Points
    75
    Par défaut
    Merci !

    Ca fonctionne beaucoup mieux comme ça !

    Petite précision, j'avais déjà essayé sans les déclarer les deux itérateurs en haut et en laissant auto, ça ne semble pas fonctionner bizarrement !

  4. #4
    Invité
    Invité(e)
    Par défaut
    oui ça marcherait aussi, c'est fait pour simplifier la vie du programmeur à la base personnellement j'aime bien voir ce que je fais et ce qui se passe, donc je ne m'en sers pas trop. À toi de voir !

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

Discussions similaires

  1. does not name a type
    Par emmesse dans le forum Débuter
    Réponses: 3
    Dernier message: 27/08/2014, 17h23
  2. [QtKeychain] 'Q_CORE_EXPORT_INLINE' does not name a type
    Par sliverTwist dans le forum Débuter
    Réponses: 18
    Dernier message: 06/03/2013, 16h45
  3. Colonne’ does not name a type
    Par tamtoum1987 dans le forum C++
    Réponses: 7
    Dernier message: 23/03/2012, 10h19
  4. ‘Arbre’ does not name a type
    Par SAKDOSS dans le forum C++
    Réponses: 12
    Dernier message: 21/04/2009, 15h53
  5. error : does not name a type // je n'y comprends rien
    Par djobanaille dans le forum C++
    Réponses: 6
    Dernier message: 19/11/2005, 11h25

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