C++のループについて

AI実装検定のご案内

C++におけるループ(繰り返し処理)とは、同じ処理を複数回実行するための構文です。

プログラムでは以下のような場面で頻繁に使用されます。

  • 配列やデータの処理
  • 計算の反復
  • 入力処理
  • ゲームやサーバーの処理
  • アルゴリズムの実装

C++では主に次の4つのループ構文が使われます。

  • for ループ
  • while ループ
  • do while ループ
  • range-based for(C++11以降)

それぞれの特徴と使い方を順番に解説します。

目次

forループ

forループは、カウンタ変数を使った反復処理に最もよく使われるループです。

特に「決まった回数の処理」を書く場合に適しています。

基本構文

for (初期化; 条件式; 更新式)
{
    繰り返し処理
}

それぞれの役割は次の通りです。

部分役割
初期化ループ開始時に一度だけ実行
条件式trueの間ループが続く
更新式1回ループするごとに実行

基本例

#include <iostream>
using namespace std;

int main()
{
    for(int i = 0; i < 5; i++)
    {
        cout << i << endl;
    }
}

出力

0
1
2
3
4

動作の流れ

  1. i = 0 を実行
  2. i < 5 を判定
  3. trueなら処理実行
  4. i++ を実行
  5. 再び条件判定

1〜10まで表示する例

for(int i = 1; i <= 10; i++)
{
    cout << i << endl;
}

配列をループする例

int arr[5] = {10,20,30,40,50};

for(int i = 0; i < 5; i++)
{
    cout << arr[i] << endl;
}

whileループ

whileループは、条件が成立している間だけ繰り返すループです。

forとの違いは、「初期化・更新を自分で書く必要がある」点です。

構文

while(条件)
{
    処理
}

基本例

#include <iostream>
using namespace std;

int main()
{
    int i = 0;

    while(i < 5)
    {
        cout << i << endl;
        i++;
    }
}

出力

0
1
2
3
4

whileが向いているケース

  • 入力が終了するまで処理
  • 条件が満たされるまで計算
  • 終了条件が明確な処理

do whileループ

do whileは、必ず1回は処理が実行されるループです。

通常の while との違いは、処理 → 条件判定 の順番で実行される点です。

構文

do
{
    処理
}
while(条件);

※最後に セミコロンが必要です。

#include <iostream>
using namespace std;

int main()
{
    int i = 0;

    do
    {
        cout << i << endl;
        i++;
    }
    while(i < 5);
}

入力処理の例

「0が入力されるまで続ける」

int x;

do
{
    cin >> x;
}
while(x != 0);

range-based for(C++11)

C++11以降では、配列やコンテナを簡単にループできるrange-based for が使えます。

構文

for(型 変数 : コンテナ)
{
    処理
}

配列の例

int arr[] = {10,20,30};

for(int x : arr)
{
    cout << x << endl;
}

出力

10
20
30

vectorの例

#include <vector>

vector<int> v = {1,2,3};

for(int x : v)
{
    cout << x << endl;
}

参照を使う場合

要素を書き換える場合は 参照 を使います。

for(int& x : v)
{
    x *= 2;
}

読み取り専用の書き方

for(const int& x : v)
{
    cout << x << endl;
}

コピーを防げるため、効率的な書き方です。

無限ループ

条件を常に true にすると、ループは終了しません

while(true)
{
    cout << "loop" << endl;
}

または

for(;;)
{
}

無限ループの主な用途

  • ゲームループ
  • サーバープログラム
  • 常時監視処理

break

breakループを強制終了する命令です。

for(int i = 0; i < 10; i++)
{
    if(i == 5)
        break;

    cout << i << endl;
}

出力

0
1
2
3
4

注意点

ネストしたループでは、break最も内側のループだけ終了します。

continue

continueその回の処理をスキップして次のループへ進む命令です。

for(int i = 0; i < 5; i++)
{
    if(i == 2)
        continue;

    cout << i << endl;
}

出力

0
1
3
4

ネストループ(ループの中のループ)

ループの中に別のループを書くこともできます。

これをネストループと呼びます。

for(int i = 0; i < 3; i++)
{
    for(int j = 0; j < 3; j++)
    {
        cout << i << "," << j << endl;
    }
}

出力

0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2

実践例:九九

for(int i = 1; i <= 9; i++)
{
    for(int j = 1; j <= 9; j++)
    {
        cout << i * j << " ";
    }

    cout << endl;
}

ループの使い分け

ループ特徴
forカウンタ型の反復
while条件中心の反復
do while最低1回は処理
range-for配列・コンテナ処理

まとめ

C++のループは主に次の4種類です。

  • for
  • while
  • do while
  • range-based for

基本的な違いは以下です。

  • for → カウンタ付きループ
  • while → 条件中心のループ
  • do while → 必ず1回実行
  • range-for → コンテナ処理を簡潔に書ける

これらを理解すると、C++の基本的な反復処理はほぼ扱えるようになります。

以上、C++のループについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次