3 votes

foreach non reconnu en C++

Dans mon livre cs106b, nous utilisons l'expression "foreach" pour parcourir une liste de mots dans une carte. J'ai implémenté le code et me suis tapé la tête contre le mur face à de mystérieuses erreurs. Voici le code :

   void DisplayWordCounts(Map<int> & wordsCount) {
     foreach (string word in wordsCount) {
        cout << left << setw(15) << word << right << setw(5)
        << wordsCount[word] << endl;
     }
}

sur la ligne commençant par "foreach", j'obtiens les erreurs suivantes : lesson4-macbeth/life.cpp:58 : error : expected primary-expression before 'word' (erreur : expression primaire attendue avant 'mot') lesson4-macbeth/life.cpp:58 : error : 'foreach' n'a pas été déclaré dans ce champ d'application. lesson4-macbeth/life.cpp:58 : error : expected `;' before '{' token

Je suppose que foreach n'est pas reconnu. Dans ce cas, comment puis-je parcourir une liste d'éléments à partir de la classe Map ?

9voto

templatetypedef Points 129554

foreach n'est pas une fonctionnalité standard du C++. Eric Roberts et moi-même l'avons développée pour la séquence d'introduction à la programmation de Stanford. Elle est antérieure à la boucle for basée sur l'intervalle du C++11, plus moderne. Maintenant que la prise en charge du compilateur C++11 est plus répandue, nous avons cessé d'utiliser la fonction foreach et j'ai simplement opté pour la version standard améliorée C++. for boucle.

Je ne conseille généralement pas d'utiliser foreach à l'avenir car c'est non standard. Cependant, si vous compilez un code plus ancien qui l'utilise, vous devrez inclure le fichier un des fichiers d'en-tête des bibliothèques C++ de Stanford. qui le définit.

6voto

Beta Points 37745

Je suggère for_each .

3voto

birryree Points 29165

Quel livre utilisez-vous ?

foreach n'est pas un mot-clé C++, et je pense que l'extension la plus proche qui l'introduit, avec cette syntaxe spécifique, dans le langage est dans Visual C++, comme décrit dans ce lien : http://blogs.msdn.com/b/arich/archive/2004/09/08/227139.aspx

Il y a for_each en <algorithm> mais sa signature est très différente de celle que vous utilisez (qui est une syntaxe for-each très Java).

Je remarque également que vous utilisez Map qui est différent de std::map ?

2voto

Gene Bushuyev Points 3819

Parce que le nom de la fonction est for_each P.S. Je pensais que c'était une question sur le C++, comme le suggère le tag, mais la syntaxe n'est pas la bonne pour le C++.

2voto

H.Josef Points 628

Foreach est no une construction en C++ !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X