🔁
【競プロ】高級repマクロ
Pythonの for i in range(...)
をC++でも書けるようにするマクロ
usage
+---------------------------+---------------------------+
| Python range syntax | Rich rep macro (C++) |
+---------------------------+---------------------------+
| for i in range(b) | rep(i, b) |
| for i in range(a, b) | rep(i, a, b) |
| for i in range(a, b, c) | rep(i, a, b, c) |
+---------------------------+---------------------------+
code
#define REP1(i, b) for (int i = 0; i < (b); ++i)
#define REP2(i, a, b) for (int i = (a); i < (b); ++i)
#define REP3(i, a, b, c) for (int i = (a); (c) > 0 ? i < (b) : i > (b); i += (c))
#define REP_SELECT(_1, _2, _3, _4, REP_NAME, ...) REP_NAME
#define rep(...) REP_SELECT(__VA_ARGS__, REP3, REP2, REP1)(__VA_ARGS__)
Discussion