2017-03-07 4 views
-3
std::string decodeMorse(std::string morseCode) { 
    // ToDo: Accept dots, dashes and spaces, return human-readable message 
    std::string decoded; 
    for(auto p : morseCode) { 
     if(p == '.') 
     decoded += MORSE_CODE[ "." ]; 
     else if(p == '-') 
     decoded += MORSE_CODE[ "-" ]; 
    } 
    return decoded; 
} 

Ceci est un extrait de code de https://www.codewars.comC++ bizarre pour la syntaxe de la boucle

Quelqu'un peut-il expliquer ce que for(auto p : morseCode) signifie? Ou peut-être réécrire ce morceau de code de façon plus élaborée?

+6

http://fr.cppreference.com/w/cpp/language/range-for – chris

+3

C'est une boucle 'for' basée sur une gamme. Il est expliqué dans la norme de langage C++. Pensez à le lire. –

+0

6 ans depuis que C++ 11 est en action, il est temps de lire un manuel. – Slava

Répondre

0

Il itère sur chaque élément dans morseCode, en commençant par celui begin se réfère à et se terminant par celui précédant end. La valeur de chaque élément itéré est copiée dans p, dont le type est le type de l'itérateur déréférencé.