vectorのemplace_backが良さそうということに案外気付いたのでメモ
vector<pair<int,int>> a;
a.push_back(make_pair(1,2));
a.push_back(1,2);
a.emplace_back(make_pair(1,2));
a.emplace_back(1,2);
なんでこれが許されるかというと,emplace_backでは要素型のクラスが取りうるコンストラクタ引数の値を元に、要素をコンテナ内で直接構築して追加するという操作が行われているため