C++의 continue 문

Jinku Hu 2023년10월12일
C++의 continue 문

이 기사에서는 C++에서 continue 문을 활용하는 방법을 설명합니다.

루프 본문의 나머지 부분을 건너뛰려면 continue 문을 사용하십시오

continue 문은 루프 종속 블록 실행을 조작하기 위해 반복 문과 함께 사용됩니다. 즉, 루프에서 continue 문에 도달하면 다음 문을 건너뛰고 제어가 조건 평가 단계로 이동합니다. 조건이 참이면 루프는 평소와 같이 새 반복 주기에서 시작합니다.

continuefor, while, do...while 또는 범위 기반 for와 같은 루프 문 중 하나 이상으로 묶인 코드 블록에만 포함될 수 있습니다. 여러 개의 중첩 루프가 있고 continue 문이 내부 루프에 포함되어 있다고 가정합니다. 건너뛰는 동작은 내부 루프에만 영향을 미치는 반면 외부 루프는 평소와 같이 동작합니다.

다음 예에서 우리는 두 개의 for 루프를 보여줍니다. 이 루프의 내부는 문자열의 vector를 통해 반복됩니다. continue 문은 루프 본문의 시작 부분에 지정되며 본질적으로 다음 문이 실행되는지 여부를 제어합니다. 따라서 rtopntop이 있는 문자열 값은 출력에 표시되지 않으며 외부 루프는 모든 주기를 실행합니다.

#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
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - C++ Loop