关联容器的下界复杂性:成员函数与非成员函数

lower_bound complexity of associative container: member function vs non-member function

本文关键字:函数 成员 复杂性 关联      更新时间:2023-10-16

集合映射具有时间复杂度为Log(N(的lower_bound(以及upper_boundqual_range(成员函数。还有非成员lower_bound,可通过包含算法标头获得。根据描述,对于随机访问迭代器,非成员函数的复杂性为Log(N(,否则为线性setmap迭代器不是随机访问。这是否意味着我应该避免非会员功能?

std::lower_bound用于由一对迭代器定义的排序范围,通常是来自某个容器的beginend。如果将它与std::setstd::map的双向(非随机访问(迭代器一起使用,那么它将不得不线性遍历范围,这与随机访问迭代器不同。方法std::set::lower_boundstd::map::lower_bound之所以存在,是因为它可以利用容器的内部结构,比其自由函数对应的方法执行得更好。因此,是的,事实上,如果可以的话,在使用std::setstd::map时,您应该支持这种方法。