C++でforの多重ループを抜ける

C++(もしくはC)で多重ループを抜けるにあたって, 面白い方法があることを知ったのでメモしておく. フラグを使ったり関数を作ったりするよりも, 場合によっては便利かも知れない.

#include <cstdio>

int main() {
    int i_max = 4;
    int j_max = 2;
    int k_max = 3;

    for (int i = 0; i < i_max; i++) {
        for (int j = 0; j < j_max; j++) {
            for (int k = 0; k < k_max; k++) {
                printf("%d %d %d\n", i, j, k);
                if (i * j * k >= 2) { // i * j * kが2以上でループを抜ける
                    i = i_max - 1;
                    j = j_max - 1;
                    k = k_max - 1;
                }
            }
        }
    }

    return 0;
}
 ./a.out
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
1 0 0
1 0 1
1 0 2
1 1 0
1 1 1
1 1 2