c++0x 学习笔记之 range-based for loop wording

2014-11-24 13:01:28 · 作者: · 浏览: 1

非常简单,就是 for 循环的精简写法

1
2
3
int array[5] = { 1, 2, 3, 4, 5 };
for ( int & x : array)
x *= 2;

对于容器同样可用,比如与 auto 共用时

1
2
3
4
5
6
std::map mm;
for ( auto i : mm )
{
if ( (*i).first.size() < 3 )
(*i).second.append( " " );
}

可用的容器有
>, <deque>, <forward_list>, <list>, <map>, , <regex>, <set>, <string>, , <unordered_map>, <unordered_set>,,<vector>

for ( for-range-declaration : expression ) statement

等效于

   
1
2
3
4
5
6
7
8
{
auto && __range = ( expression );
for (auto __begin = begin-expr, __end = end-expr; __begin != __end; ++__begin )
{
for -range-declaration = *__begin;
statement
}
}