2017-03-07 56 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; 
} 

這是https://www.codewars.comC++怪異循環語法

代碼提取有人能解釋一下for(auto p : morseCode)手段? 或者也許用更復雜的方式重寫這段代碼?

+6

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

+3

這是一個基於'for'循環的範圍。它在C++語言標準中有解釋。考慮閱讀它。 –

+0

自從C++ 11開始運作6年後,閱讀教科書的時間已到。 – Slava

回答

0

它遍歷morseCode中的每個元素,從一個begin開始並指向end之前的一個元素。每個迭代元素的值被複制到p中,其類型是解引用迭代器的類型。