반응형
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문을 사용하여 읽는 시퀀스내부의 원소 값을 수정할 수 없다.
참조자료
반응형
'C++' 카테고리의 다른 글
C++11 : STL std::array 정적배열 (0) | 2018.03.04 |
---|---|
C++ 컴파일 에러 : cannot bind 'std::basic_ostream<char>' lvalue to 'std::basic_ostream<char>&&' (0) | 2018.01.05 |
C++ Socket : 고정 구조체 (0) | 2017.08.04 |
C++11 : 연역적 선언 auto (입문) (0) | 2017.07.03 |
C++ 패턴 : 동적 싱글턴(Dynamic Singleton) (0) | 2017.06.16 |