It1とit2の間に違いがある場合は?
std::set<sometype> s;
auto it1 = std::inserter(s, s.begin());
auto it2 = std::inserter(s, s.end());
実際には、それほど多くはありません。空のset
に、すでに順番に並んでいる要素を多数挿入する場合、2番目の要素はやや高速になりますが、それだけです。 std::insert_iterator
イテレータでinsert
を呼び出します。 std::set
はそれをヒントとして解釈し、挿入がヒントの直前にある場合は(lg nではなく)一定時間で挿入します。 (実際、set
が空の場合、どちらもまったく同じことを行うと思います。)
から http://www.sgi.com/tech/stl/insert_iterator.html
ただし、Sorted Associative Containerの場合、insert_iteratorのコンストラクターのイテレーターはほとんど関係ありません。新しい要素は必ずしも連続した範囲を形成するわけではありません。キーの昇順で、コンテナ内の適切な場所に表示されます。それらが挿入される順序は効率にのみ影響します。すでにソートされた範囲をソート済み連想コンテナーに挿入することは、O(N)操作です。