VC10에서 선보였던 C++11의 기능 중 강력하면서 사용하기 쉽고, 자주 사용한 기능이 아마 'auto'이지 않을까 생각합니다. 예전에 강연을 할 때 auto와 관련된 예제를 보여드리면 많은 분들이 아주 좋아하시더군요(좀 놀라기도 하시더군요^^). 어떤 분들은 딴 건 제쳐두고 이것 때문이라도 VC10을 사용해야겠다는 분들이 있었습니다.
이번 VC11에서도 'auto'와 같은 강력한 기능이 있습니다. 바로 'range base for' 입니다. 이것을 사용하면 반복문을 아주 쉽고, 강력하게 사용할 수 있습니다.
또 VC 특화 기능인 for each와 비슷하기 때문에 기존에 for each를 사용하고 있다면 이제는 range base for로 쉽게 바꾸어서 사용하면 됩니다.
예제를 통해 일반적인 for 문, VC의 for each문, range base for문의 차이를 예제를 통해서 보겠습니다.
< 예제. 1 >
#include <iostream>
int main()
{
int NumberList[5] = { 1, 2, 3, 4, 5 };
std::cout << "일반적인 for 문" << std::endl;
for( int i = 0; i < 5; ++i )
{
std::cout << i << std::endl;
}
std::cout << "VC++ 특화의 for each문" << std::endl;
for each( int i in NumberList )
{
std::cout << i << std::endl;
}
std::cout << "range base for 문" << std::endl;
for( auto i : NumberList )
{
std::cout << i << std::endl;
}
return 0;
}
< 실행 결과 >
<예제.1>을 보면 일반적인 for 문은
for( int i = 0; i < 5; ++i )
와 같이 시작과 종료 조건, 증가 값 이렇게 3개의 조건에 의해서 반복 됩니다.
그러나 range base for문은 VC만의 반복문인 for each와 비슷하게 데이터셋 변수와 이 데이터셋 요소의 타입을 선언하면 됩니다.
for( auto i : NumberList )
기존의 for 문에 비해서 또는 for each 보다도 간편해졌고, for each는 표준이 아닌 VC만의 기능인 것에 비해서 range base for는 C++ 표준 기능입니다.
range base for 문의 문법은 아래와 같습니다.
for ( for-range-declaration : expression ) statement
range base for 덕분에 반복문의 사용이 쉬워졌고, for 문을 사용할 때 종료 조건이 잘못되어 메모리 침범을 하는 위험도 피할 수 있게 되었습니다.
'C++0x' 카테고리의 다른 글
[ VC11-C++11 ] chrono - clock 클래스 (1) | 2012.08.14 |
---|---|
[ VC11-C++11 ] chrono - 시간 계산 (0) | 2012.08.07 |
[ VC11-C++11 ] chrono - 시간 측정하기 (0) | 2012.07.31 |
[ VC11-C++11 ] enum - 전방선언 (0) | 2012.07.23 |
[ VC11-C++11 ] enum - unscoped enumeration과 scoped enumeration (0) | 2012.07.16 |