C++의 continue 문
이 기사에서는 C++에서 continue
문을 활용하는 방법을 설명합니다.
루프 본문의 나머지 부분을 건너뛰려면 continue
문을 사용하십시오
continue
문은 루프 종속 블록 실행을 조작하기 위해 반복 문과 함께 사용됩니다. 즉, 루프에서 continue
문에 도달하면 다음 문을 건너뛰고 제어가 조건 평가 단계로 이동합니다. 조건이 참이면 루프는 평소와 같이 새 반복 주기에서 시작합니다.
continue
는 for
, while
, do...while
또는 범위 기반 for
와 같은 루프 문 중 하나 이상으로 묶인 코드 블록에만 포함될 수 있습니다. 여러 개의 중첩 루프가 있고 continue
문이 내부 루프에 포함되어 있다고 가정합니다. 건너뛰는 동작은 내부 루프에만 영향을 미치는 반면 외부 루프는 평소와 같이 동작합니다.
다음 예에서 우리는 두 개의 for
루프를 보여줍니다. 이 루프의 내부는 문자열의 vector
를 통해 반복됩니다. continue
문은 루프 본문의 시작 부분에 지정되며 본질적으로 다음 문이 실행되는지 여부를 제어합니다. 따라서 rtop
및 ntop
이 있는 문자열 값은 출력에 표시되지 않으며 외부 루프는 모든 주기를 실행합니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::setw;
using std::string;
using std::vector;
int main() {
vector<string> vec = {"ntop", "mtop", "htop", "ktop",
"rtop", "ltop", "ftop", "atop"};
for (int i = 0; i < 3; i++) {
for (const auto &it : vec) {
if (it == "rtop" || it == "ntop") continue;
cout << it << ", ";
}
cout << endl;
}
return EXIT_SUCCESS;
}
출력:
mtop, htop, ktop, ltop, ftop, atop,
mtop, htop, ktop, ltop, ftop, atop,
mtop, htop, ktop, ltop, ftop, atop,
또는 continue
대신 goto
문을 사용하여 이전 코드 조각과 동일한 동작을 구현할 수 있습니다. goto
는 프로그램에서 주어진 줄로 무조건 점프하는 역할을 하며 변수 초기화 문을 건너뛰는 데 사용해서는 안 됩니다. 이 경우, 빈 명령문은 END
레이블로 표시되어 goto
가 실행을 지정된 지점으로 이동할 수 있습니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::setw;
using std::string;
using std::vector;
int main() {
vector<string> vec = {"ntop", "mtop", "htop", "ktop",
"rtop", "ltop", "ftop", "atop"};
for (int i = 0; i < 3; i++) {
for (const auto &it : vec) {
if (it == "rtop" || it == "ntop") goto END;
cout << it << ", ";
END:;
}
cout << endl;
}
return EXIT_SUCCESS;
}
continue
문은 일부 코딩 지침에서 나쁜 습관으로 간주되어 코드를 읽기가 조금 더 어렵게 만들 수 있습니다. goto
문을 과도하게 사용하는 경우에도 동일한 권장 사항이 제공됩니다. 그래도 주어진 문제가 가독성 비용을 내면화하고 이러한 명령문을 사용하여 더 쉽게 구현할 수 있는 경우 이러한 구성을 사용할 수 있습니다. 다음 코드 예제는 while
루프에서 continue
문의 기본 사용법을 보여줍니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::setw;
using std::string;
using std::vector;
int main() {
vector<string> vec = {"ntop", "mtop", "htop", "ktop",
"rtop", "ltop", "ftop", "atop"};
while (!vec.empty()) {
if (vec.back() == "atop") {
vec.pop_back();
continue;
}
cout << vec.back() << ", ";
vec.pop_back();
}
cout << "\nsize = " << vec.size() << endl;
return EXIT_SUCCESS;
}
출력:
ftop, ltop, rtop, ktop, htop, mtop, ntop,
size = 0
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook