35

如果it1和it2有什么区别?

std::set<sometype> s;

auto it1 = std::inserter(s, s.begin());
auto it2 = std::inserter(s, s.end());
4

2 回答 2

33

在实践中,并不多。如果您将大量已经在 order 中的元素插入到 emptyset中,第二个会更快一些,但仅此而已。 使用迭代器std::insert_iterator调用;将其解释为提示,如果插入紧接在提示之前,则以恒定时间(而不是 lg n)插入。(实际上,如果是空的,我认为两者都会做同样的事情。)insertstd::setset

于 2011-05-06T09:56:49.257 回答
7

来自http://www.sgi.com/tech/stl/insert_iterator.html

然而,在排序关联容器的情况下,insert_iterator 的构造函数中的迭代器几乎是无关紧要的。新元素不一定会形成一个连续的范围;它们将按按键升序出现在容器中的适当位置。它们的插入顺序只会影响效率:将已经排序的范围插入到排序关联容器中是 O(N) 操作。

于 2012-11-29T10:41:19.943 回答