C++ 判断与循环

if / switch、for / while、break 与 continue

分支 if / else

if (x > 0) {
    // ...
} else if (x == 0) {
    // ...
} else {
    // ...
}

三元运算符:int m = (a > b) ? a : b;

switch

适合多分支等值判断(整数、字符):

switch (op) {
    case 1: /* ... */ break;
    case 2: /* ... */ break;
    default: break;
}

for 循环

for (int i = 0; i < n; i++) { /* ... */ }

vector<int> v = {1, 2, 3};
for (int x : v) { /* 范围 for */ }

while

while (cin >> n && n) { /* 多组数据 */ }
while (!q.empty()) { /* BFS */ }

break / continue

  • break:跳出当前循环或 switch
  • continue:进入下一轮循环

常见写法

// 枚举子集(状压)
for (int s = mask; s; s = (s - 1) & mask) { }

// 二分
while (l < r) {
    int mid = (l + r + 1) >> 1;
    if (check(mid)) l = mid; else r = mid - 1;
}