C++11里支持range-based for loop了,到这里可以看到完整的语法及示例:http://en.cppreference.com/w/cpp/language/range-for。英文的,我用中文演绎一下。
range-based for loop的基本语法如下:
for ( range_declaration : range_expression ) loop_statement
做一个简单说明:
- range_declaration,变量声明,就像for循环里的初始化部分一样,比如
for(int n : numbers)
中的int n
就是变量声明。它的类型,与后面的序列(容器)中存储的数据的类型一致。 - range_expression,序列,可以是STL里的vector、list、map等等,也可以是数组,甚至可以是一个花括号声明的初始化列表。
- loop_statement,循环体,这部分和for一致了,里面可以使用range_declaration里声明的变量,做你想做的事儿。循环体里也可以使用continue、break等语句,和for一样一样的。
在C++11 | 自动类型推断——auto中其实我们已经用过range-for了,这里再举几个简单的例子:
int _tmain(int argc, _TCHAR* argv[])
{
const char *helloWorld[] = { "Hello", "World", "!" };
std::cout << "range-for on C-style array:\n " ;
for (const char *word : helloWorld)
{