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;
}
的代码摘录
谁能解释一下 for( auto p : morseCode )
是什么意思?
或者以更精细的方式重写这段代码?
它遍历 morseCode
中的每个元素,从 begin
引用的元素开始,到 end
之前的元素结束。每个迭代元素的值被复制到 p
,其类型是解引用迭代器的类型。
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;
}
的代码摘录
谁能解释一下 for( auto p : morseCode )
是什么意思?
或者以更精细的方式重写这段代码?
它遍历 morseCode
中的每个元素,从 begin
引用的元素开始,到 end
之前的元素结束。每个迭代元素的值被复制到 p
,其类型是解引用迭代器的类型。