プログラムコンテスト用のマクロ


このエントリーをはてなブックマークに追加

これまでプログラムコンテスト参加時にあまりマクロは使わないようにしていたが、上位陣のコードを読むときに必須だということで、今後は自分でも使えるようにしようかと考え中。上位陣が多く使っていそうなマクロを集めた。

__typeofを使ってイテレータの型を取り出しているのが勉強になる。

#include <iostream>
#include <sstream>
#include <string>
#include <cmath>
#include <cstdio>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <algorithm>
#include <functional>
#include <numeric>


#define REP(i,n) for(int i = 0; i < (int)(n); ++i)
#define FOR(i,a,b) for(int i = (a); i < (int)(b); ++i)
#define FOREACH(i, n) for (__typeof((n).begin()) i = (n).begin(); i != (n).end(); ++i)
#define ALL(c) (c).begin(), (c).end()
#define SIZE(v) ((int)v.size())

#define pb push_back
#define mp make_pair

using namespace std;
typedef unsigned int uint;
typedef long long ll;
typedef unsigned long long ull;

int main(){
  REP(i,10){
    cout << "i = " << i << endl;
  }

  FOR(i, 5, 10){
    cout << "i = " << i << endl;
  }

  vector<int> vec;
  FOR(i, 5, 10){
    vec.push_back( i * 10 );
  }

  FOREACH(it, vec){
    cout << *it << endl;
  }

  return 0;
}