1.1.10 루프(반복문)
컴퓨터는 태생적으로 같은 작업을 반복하는데 능하다.
C++에서는 while루프, do/while루프, for루프, 구간지정for루프 등, 네가지 형태의 반복문을 지원한다.
while루프
while루프는 주어진 표현식이 참인 동안 while블록의 코드가 실행되게 한다.
다음 코드는 this is silly 를 다섯번 출력하는 코드이다.
int i = 0;
while ( i < 5) {
std::cout<<"This is silly."<<std::endl;
++i;
}
break 키워드를 이용하면, 루프에서 바로 벗어나 while블록 이후의 코드를 연속해서 실행하게 할 수 있다.
반면, continue키워드는, 루프 내에서 해당 키워드 아래쪽 코드를 실행하지 않고,
바로 루프 처음으로 돌아가. 다시 실행하게 한다.
두 키워드 모두 갑작스러운 코드점프를 야기하여, 가독성을 떨어뜨릴 수 있다.
do/while 루프
do/while 루프는 while루프의 파생형으로 whlie과 비슷하나, while블록의 코드가 처음에 한번 무조건 실행되고, 루프여부를 체크한다.
이런 방식은 처음 실행이 무조건 발생해야 함으로, 첫번째 비교문의 불필요실행을 제거해주는 효과가 있다.
int i = 100;
do {
std::cout<<"This is silly."<<std::endl;
++i;
} while ( i < 5);
for 루프
for루프와 while루프는 상호변환이 가능하다. for루프는 시작, 중단조건, 루프 마지막에 반복수행할 코드를 지정할 수 있기 때문에, whlie보다 더 자주 쓰이는 경향이 있다.
while과 하는일은 같지만, 시작, 중단조건, 반복코드가 한눈에 보임으로, 가독성이 훨신 좋다.
for(int i = 0; i < 5; i++) {
std::cout<< "This is silly" << std::endl;
}
구간지정 for루프
구간지정 for 루프는, 리스트를 순회하며 작업할 때 편리하다.
구간지정 for 루프는 C언어의 배열, 초기화 리스트, 그리고 반복자(iterator)를 리턴하는 begin()과 end()함수를 멤버로 가진 데이터 타입을 대상으로 한다.
std::array와 STL에 있는 모든 컨테이너는 begin()과 end()함수를 가지고 있기 때문에, 구간지정 for루프에 이용될 수 있다.
std::array<int, 4> arr = {1, 2, 3, 4};
for(int i : arr) {
std::cout << i << std::endl;
}
'전문가를 위한 C++정리' 카테고리의 다른 글
1. C++와 STL 부딪혀보기 1.1 C++ 언어의 기초 1.1.12 타입 추론 (0) | 2024.01.08 |
---|---|
1. C++와 STL 부딪혀보기 1.1 C++ 언어의 기초 1.1.11 함수 (0) | 2024.01.08 |
1. C++와 STL 부딪혀보기 1.1 C++ 언어의 기초 1.1.9 배열 (0) | 2024.01.05 |
1. C++와 STL 부딪혀보기 1.1 C++ 언어의 기초 1.1.8 논리 산출 연산자 (0) | 2024.01.05 |
1. C++와 STL 부딪혀보기 1.1 C++ 언어의 기초 1.1.7 조건문 (0) | 2024.01.05 |