- 루프 순회 값 i의 초기 값을 정해줄 필요 없음
- 배열의 길이을 지정 안해줘도 됨
- 순회 조건을 지정할 필요 없음
- VS2013부터 지원 해줌
cf. <algorithm> 의 for_each()는 break; 가 안됨 => 모두 돌아야 함, return; 시 무시함
하지만 range-based for의 경우 for와 같이 도중에 루프문을 나오는 것이 가능함.
ex)
int arr[5] = {0, 1, 2, 3, 4};
for(int i : arr)
{
std::cout<<i<<std::endl;
}
ex)
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
// C++98
std::vector<int>::const_iterator itor;
for (itor = vec.begin(); itor != vec.end(); ++itor)
std::cout << *itor << std::endl;
// C++11 VS2013 range based for
for (auto a : vec)
std::cout << a << std::endl;
// ramda & for_each in stl algorithm
std::for_each(vec.begin(), vec.end(), [](int i)
{
std::cout << i << std::endl;
});
'programing > C++' 카테고리의 다른 글
[Modern C++] std::array (0) | 2016.08.16 |
---|---|
[Modern C++] 유니폼 초기화(vector) (0) | 2016.08.16 |
[Modern C++] 람다 함수 & decltype (0) | 2016.08.16 |
erase()와 remove() 차이 (1) | 2016.08.04 |
임시객체 (0) | 2016.08.02 |