標準入力がちょっとだけ楽になるテンプレート

書きやすさ・使いやすさ・応用性の高さから便利だよという紹介です。

#define in(v) v; cin >> v;

int main() {
  int in(N);
  // int in(M);
  // int in(H); int in(W);

  rep(i, N) {
    int in(a);
    // cin >> A[i];
  }

  return 0;
}

解説

このin()マクロを使うと、変数の定義と入力を受け取る部分が分離しません。

メリット: 変数名を変更するとき変える箇所が少ない

int N, M, K; cin >> N >> M >> K;

このようなテンプレートを使っているとき、N、MをそれぞれHとWに変えたくなったら4箇所も変えなければなりません。

int H, W, K; cin >> H >> W >> K;

しかし、in()マクロなら2箇所で済みます。

int in(N); int in(M); int in(K);
// これを直すと
int in(H); int in(W); int in(K);

また、変数を増やすときもint in(N);をコピペして変数名を直すだけなので、非常に楽です。

グローバル変数へ移しやすい

他にも、たとえば変数をグローバルへ移したくなったとき、このマクロならばintをはずすだけで済みます。

int N;
int main() {
  // int in(N);
  in(N);
}