我在set/map中使用insert带有hint(emplace_hint)的函数.
该API文档说,使用暗示的地方时,它会"开始从提示.安迪搜索最后的地点和加快这一进程大大当实际插入点是任何一个位置或接近它."
我想知道这里的关闭是指之前,之后还是两者,以及如何有效地使用此功能?
如果使用lower_bound或upper_bound找到手头附近的地方,似乎没有加快这个过程.
这似乎依赖于实现。所以你需要检查你的库的实现。(我没有检查其他修订)。
\n\nn3797 表 102。\xc2\xa7 23.2.4。
\n\n\n\n\n一般为对数,但如果它\n 插在 p 之前,则为摊余常量
\n
该标准规定,如果您提供精确的插入点(例如由 lower_bound 给出),映射/集将使用它,并且不需要做额外的工作来执行插入,除非满足特殊情况。如果您不提供精确的插入点,它的行为可能就像常规插入一样。如果您提供了不正确的插入点,则不允许其表现比常规插入更差。
\n\n常规插入以与 非常相似的方式在映射中查找插入点lower_bound。lower_bound也是对数的。因此,如果您lower_bound + insert(hint, element)这样做,您所做的工作就与insert(element).