请问set成员函数lower_bound与全局lower_bound函数哪个速度更快?
set::lower_bound 与全局 lower_bound 的速度差异
- 速度结论:
set_name.lower_bound(key)的执行速度远快于lower_bound(set_name.begin(), set_name.end(), value),二者性能差距极大。 - 底层原因:
- 作为set的成员函数,
lower_bound直接利用set内部红黑树的有序特性,进行二叉搜索,时间复杂度为 O(log n)。 - 全局的
std::lower_bound是通用算法,无法感知容器的底层结构,只能通过迭代器逐个遍历比较,对于set这种双向迭代器容器,时间复杂度为 O(n)。
- 作为set的成员函数,
- 场景差异:当set中的元素规模较大时(比如万级以上),全局版本的耗时会随元素数量线性增加,而成员函数的耗时增长非常平缓,几乎可以忽略。
内容的提问来源于stack exchange,提问作者TTMED
相关产品推荐
相关产品推荐

