반응형

C++11 :  범위기반 for 문

배경

 이미 C++11에서부터 존재했지만, 신경을 안쓰면 잘 모르는 for문의 기능이다. 이미 다른 언어들은 기존부터 foreach라는 키워드로 제공했던 기능이다.


 for문에서 직접 범위기반으로 반복하는 것이 가능 해짐으로써 STL 컨터이너 사용에 좀 더 편리 해졌다.



사용방법

#include <iostream>
#include <vector>

int main(const int argc, const char * argv[])
{
    std::vector<int> vec{ 1, 2, 3, 4};
    // 기존 반복자 사용방법
    auto itVec = vec.begin();
    for(; itVec != vec.end(); ++itVec)
    {
        std::cout << (*itVec) << std::endl;
    }

    // 범위 for문
    for(auto valVec : vec)
    {
        std::cout << valVec << std::endl;
    }
    return 0;
}


 첫 for문은 반복자를 이용한 원소 출력인 반면, 두번째 for문은 범위를 이용해서 원소를 확인하는 방법이다. auto 키워드는 C++11에서 가장 먼저 사용하게 되기때문에 자세한 설명은 생략한다.(auto 링크)



주요 특징

 1. 기존 반복자를 사용하지 않고 시퀀스(메모리가 연결된 자료형)형 컨테이너의 원소를 확인을 할 수 있다.
 2. 읽는 원소는 시퀀스 내부 원소의 형으로 변환된다.

 3. 범위 for문을 사용하여 읽는 시퀀스내부의 원소 값을 수정할 수 없다.



참조자료

MSDN 범위기반 for문




반응형

+ Recent posts