C++ 奇怪的 for 循环语法

C++ weird for loop syntax

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.com

的代码摘录

谁能解释一下 for( auto p : morseCode ) 是什么意思? 或者以更精细的方式重写这段代码?

它遍历 morseCode 中的每个元素,从 begin 引用的元素开始,到 end 之前的元素结束。每个迭代元素的值被复制到 p,其类型是解引用迭代器的类型。