关联容器的下界复杂性:成员函数与非成员函数
lower_bound complexity of associative container: member function vs non-member function
集合和映射具有时间复杂度为Log(N(的lower_bound(以及upper_boundqual_range(成员函数。还有非成员lower_bound,可通过包含算法标头获得。根据描述,对于随机访问迭代器,非成员函数的复杂性为Log(N(,否则为线性set和map迭代器不是随机访问。这是否意味着我应该避免非会员功能?
std::lower_bound
用于由一对迭代器定义的排序范围,通常是来自某个容器的begin
和end
。如果将它与std::set
或std::map
的双向(非随机访问(迭代器一起使用,那么它将不得不线性遍历范围,这与随机访问迭代器不同。方法std::set::lower_bound
和std::map::lower_bound
之所以存在,是因为它可以利用容器的内部结构,比其自由函数对应的方法执行得更好。因此,是的,事实上,如果可以的话,在使用std::set
或std::map
时,您应该支持这种方法。
相关文章:
- 如何使用指针传递给函数的数组中对象的函数成员
- c++构造函数成员初始化:传递参数
- 创建 std::函数,它返回具有函数成员值的变量.分段错误
- 如何在C++通过公共函数访问私有函数成员?
- 解释了构造函数成员初始化列表
- 调用std::函数成员时内存损坏
- 是否可以为模板类的模板函数成员设置别名?
- 捕获 lambda 函数C++成员变量
- 构造函数成员初始值设定项跨成员列出,安全吗?
- 获取与在模板参数中传递的函数成员类型相同的类
- 如何从公共函数成员访问地图私有成员
- C 构造函数成员分配优化
- 使用命名空间进行函数成员定义
- 函数成员作为 CUDA 内核的参数
- 模板基类函数成员的别名
- 函数成员中用于void和继承的enable_if
- 头文件中是否定义了一个很长的Class函数成员
- 类内/构造函数成员初始化
- 使用指向部分专用函数成员的指针自动填充向量
- 指向函数成员的指针