c++ - 将 .begin() 与 .end() 用于 std::inserter 用于 std::set 之间有区别吗?

标签 c++ stl stdset insert-iterator

如果it1和it2有什么区别?

std::set<sometype> s;

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

最佳答案

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

关于c++ - 将 .begin() 与 .end() 用于 std::inserter 用于 std::set 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5909624/

相关文章:

c++ - 如何访问成对元素的映射?

c++ - 在 C++ 中推断函数或仿函数的返回类型

c++ - 赋值中的表达式评估

c++ - 在 C++ 中连接字符串

c++ - 模板函数中的 std::function

c++ - 如何更改适配器容器的基本底层容器类型?

c++ - OS X 选择 llvm gcc 编译器

C++ 自定义比较器不工作 MWE

c++ - std::set 中的自定义仿函数

c++ - 为什么 std::(multi)set 提供非 const 迭代器方法