listにのみ存在するメソッドは、listの実装の都合上<algorithm>の関数のコンセプトを満たせないことがあるから特別に実装されている
アルゴリズムがM種類、コンテナがN種類存在するとき、それぞれのコンテナに全てのアルゴリズムを実装すると全部でM*N種類の実装が発生するが、コンテナとアルゴリズムの間にイテレータを挟むことで実装個数をM+N個まで削減することが出来る