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