配列のswapとvectorのswap

vectorのswap

vector<int> a(N), b(N);
swap(a, b);

このswapの実体はvector::swapでswap(a,b)はO(1)で終わる。DPでメモリを節約するのによくやる。

配列のswap

int a[N] = {}, b[N] = {};
swap(a, b);

先程のコードを配列に変えただけ。実はこちらのswap(a,b)にはO(N)かかる。 この要素数が等しい配列のswap(a,b)は配列の各値を交換している。 ちなみに

int a[N] = {}, b[N+1] ={};
swap(a, b);

のように、2個の配列の要素数が異なる場合、コンパイルエラーになった。