Language/C++

C++ 11 :: Range Based For

VallistA2014. 10. 20. 22:00

C++ 11 :: Range Based For


기존에 있던 C++의 for 구문은 정확히 자신이 무엇을 해야하는지 명확하게 나타내게 되어 있습니다.

하지만 수많은 자료형이 생김에 따라 자료형을 있는 그대로 다 가져올 수 있는 for 문 Type을 만들 수 있게 되었습니다.

그것이 Range Based For의 시작입니다.


for문은 우리가 반복문으로 많이 쓰던 함수입니다.

아주 간단한 구조로 이루어져 있어서 굉장히 많이 쓰이던 것 이었죠.

for(초기화 문, 조건 문, 증감 문) 으로 되어있습니다.


자 이번 예제에서도 vector을 이용해 예를 들도록 하겠습니다.



일반 C++ 에서의 간단한 과정입니다.

이런 형식으로 사용을 했었죠.


C++ 11에서는 어떤 식으로 사용을 할까요?

먼저 첫번째 사용 방법입니다. 



이 사용 방법은 :(콜론) 을 사용하여 전부 다 돌게 됩니다.


기존의 iterator 처럼 하나하나씩 돌 필요가 없이 이런 형식으로 내부의 값을 전부 가져올 수 있게 됩니다.


두번째 방법 입니다.



두번째는 C# 처럼 for each를 사용하는 방법입니다. 

STL 라이브 러리 안에는 for_each 라는 구문이 있습니다.

둘다 똑같지만, STL 안에있는 것을 사용하기를 권고 드립니다.


각각의 마다, 해당하는 for문을 적절하게 써준다면 좀 더 효율적인 코딩이 되지 않을까 싶습니다.

다만 이렇게 사용하게 될 경우 단점도 존재합니다.


먼저 편리하고, 각각의 자료형 대로 사용이 가능합니다.

하지만 이진 탐색이라던지 자료구조를 제대로 활용 할 수 없게 되어버립니다.


수많은 배열을 돌릴 때 속도가 전반적으로 느리기 때문에 이 방법은 추천드리지 않습니다.


'Language > C++' 카테고리의 다른 글

C++ 11 :: decltype  (0) 2014.10.20
C++ 11 :: Uniform Initialization  (0) 2014.10.20
C++ 11 :: Range Based For  (0) 2014.10.20
C++ 11 :: Auto  (0) 2014.10.20
C++ :: 문자열 split (string tokenizer)  (2) 2014.06.01
C++ :: string 문자열  (0) 2014.06.01

댓글

댓글쓰기 폼

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.

자고 싶습니다. ㅠㅠ

페이스북    :: 링크
카카오톡    :: kingbye1
Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today : 19

Total : 414,365

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘