C++ での break 対 continue

胡金庫 2023年10月12日
  1. break ステートメント演算子を使用してループ本体を終了させる
  2. ループ本体の一部をスキップするために continue 文を使用する
C++ での break 対 continue

この記事では、C++ で break 文と continue 文を使い分ける方法について複数の方法を示します。

break ステートメント演算子を使用してループ本体を終了させる

continue と同様の break 文はジャンプ文と呼ばれ、プログラムの実行の流れを中断させるために利用されています。この場合、breakfor ループ文を終了させるために利用されています。なお、break に到達して実行されると、プログラムはループ本体を離れて次の文 cout << item << "3"から続行されています。break は反復や switch 文と併用しなければならず、最も近いループ/switch にのみ影響を与えます。

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::string;
using std::vector;

int main() {
  vector<string> arr1 = {"Gull", "Hawk"};

  for (auto &item : arr1) {
    cout << item << " 1 " << endl;
    for (const auto &item1 : arr1) {
      cout << item << " 2 " << endl;
      if (item == "Hawk") {
        break;
      }
    }
    cout << item << " 3 " << endl;
  }

  return EXIT_SUCCESS;
}

出力:

Gull 1
Gull 2
Gull 2
Gull 3
Hawk 1
Hawk 2
Hawk 3

ループ本体の一部をスキップするために continue 文を使用する

continue 文は、現在のループの反復を終了させて次の反復の実行を開始するために利用できる言語機能です。コンティニュー文は forwhiledo while ループでのみ使用できます。文が複数の入れ子になったループブロックの内部に置かれている場合、continue は内部のループブロックの反復処理のみを中断し、条件式の評価に進みます。

次の例では、現在の vector 要素が Hawk と等しい場合に continue 文を実行しています。実行されると、プログラムは for ループ式を評価し、現在のところ vector の中に他の要素が残っているかどうかを調べます。真ならば cout << item << " 2 " 行が実行され、そうでなければ cout << item << " 3 " に達します。

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::string;
using std::vector;

int main() {
  vector<string> arr1 = {"Gull", "Hawk"};

  for (auto &item : arr1) {
    cout << item << " 1 " << endl;
    for (const auto &item1 : arr1) {
      cout << item << " 2 " << endl;
      if (item == "Hawk") {
        continue;
      }
    }
    cout << item << " 3 " << endl;
  }
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

Gull 1
Gull 2
Gull 2
Gull 3
Hawk 1
Hawk 2
Hawk 2
Hawk 3
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - C++ Loop