본문 바로가기
programing/C++

[Modern C++] range-based for (범위 기반 for문)

by RedWiz 2016. 8. 16.

- 루프 순회 값 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