아래 포스팅에서 range based for loops 에 대해 소개 드린 적이 있는데요~

  


2014/03/02 - [programming language/C/C++] - C++ range based for loops

 

Eclipse에서 Range Based For Loops 를 사용하기 위해서 C++11 옵션을 설정을 해야 합니다.

 

Eclipse 에서 C++11 옵션 설정하는 방법은 아래 주소에 나와 있더군요.

 

http://stackoverflow.com/questions/17457069/enabling-c11-in-eclipse-juno-kepler-cdt

 

첫번재로는 프로젝트 클릭후 마우스 오른쪽 클릭하고~ Properties 에 들어가거나 Alt+ Enter 를 누릅니다.

 

그리고 아래 그림과 같이 Miscellaneous 의 제일 끝에 -std=c++11 를 추가 해 줍니다.

 

그리고 Apply 를 눌러서 적용합니다.

 

다음으로 C/C++ general → Preprocessor Include Paths, Macros 에서 Providers 탭에 들어가서~ 체크가 된 GCC Built in Compiler Settings 를 클릭하고 Use global provider shared between projects 옵션을 체크 해제 한 후에 아래 그림과 같이 -std=c++0x 를 추가 합니다.

 

마지막으로 Apply 를 눌러서 적용하고 OK 를 눌러서 빠져 나옵니다.

 

이제 다음과 같이 Range Based For Loops 코드를 실행해 보면 정상적으로 동작 합니다.

 

#include <vector>

#include <iostream>

 

using namespace std;

 

int main(int argc, char **argv) {

    vector<int> vec;

    vec.push_back(10);

    vec.push_back(20);

 

    for (int i : vec) {

        cout << i;

    }

 

    return 0;

}


아래 포스팅에서 소개를 했지만 C++ 의 발전은 정말 눈부신 것 같습니다.

 


2012/08/26 - [컴퓨터일반] - C++11 많이 좋아졌네요.

 


예전에 그리 어렵게 했던 또는 귀찮게 했던 것들이 하나 하나 쉬워지는 모습을 보면서 참…. 세상은 계속 좋아지는구나 라는 생각을 많이 하는데요~

 

오늘은 간단하게 아래 주소에서 소개하는 range based for loops 에 대해 소개 드리려 합니다.

 

http://www.cprogramming.com/c++11/c++11-ranged-for-loop.html

 

아래 포스팅의 cartesian.h 파일에서도 range based for loops 를 사용했는데요~ 참 편리하긴 하더군요.


2014/03/01 - [programming language/C/C++] - C++ Cartesian Product


 

C++ 의 vector 와 같은 container 에 대해 for 문 등을 돌릴 때 iterator 를 이용하던 인덱스를 이용하던 해야 했었는데 간단하게 아래 예와 같이 for 문을 돌릴수가 있습니다… 너무 간단해서 이게 C++ 맞나 하는 생각이 들더군요.

 

vector<int> vec;

vec.push_back( 10 );

vec.push_back( 20 );

 

for (int i : vec )

{

cout << i;

}

 

벡터 내의 값을 바꾸고 싶을 때는 다음과 같이 & 기호를 사용해서 이용하면 되고~

 

for (int& i : vec )

{

i++; // increments the value in the vector

}

 

int 라는 타입 조차 생각해서 써주기 귀찮다 하면 auto 라는 키워드를 사용해서 다음과 같이 작성 할 수 있습니다.

 

for (auto& i : vec )

{

i++; // increments the value in the vector

}

 

위 예들은 C++11에서 추가된 기능이니 만큼 최신의 컴파일러를 사용해야 합니다. 저는 gcc (tdm64-2) 4.8.1 을 사용하고 있고 아래 그림과 같이 codeblock 에서 C++11 Compiler Flag 를 체크 했습니다.





+ Recent posts