C++中std::set::lower_bound和std::lower_bound的区别
C++中的std::lower_bound:
在C++中,lower_bound()方法用于返回一个迭代器,该迭代器指向指定范围内第一个值不小于给定值的元素。这意味着该函数返回比该数字稍大的下一个最小数字的索引。
C++中的std::set::lower_bound:
std::set::lower_bound()是C++ STL中的内置函数,它返回指向容器中等于参数传递的 K 的元素的迭代器。如果在 set 容器中不存在K,则该函数返回一个指向接下来一个刚好大于 K 的元素的迭代器。如果在参数中传递的键超过了容器中的最大值,则迭代器返回指向set容器中的最后一个元素。
下面是 std::lower_bound 和 std::set::lower_bound 之间的区别:
序号 | std::lower_bound() | std::set::lower_bound() |
---|---|---|
1 | 语法:std::lower_bound(ForwardIterator first, ForwardIterator last, const T& val)。 | 语法:std::lower_bound(const value_type& val)。 |
2 | std::lower_bound具有随机访问迭代器和非随机访问迭代器。 | std::set::lower_bound具有双向迭代器。 |
3 | 该函数通过使用随机访问迭代器优化比较的次数,这对于随机访问迭代器是有效的。 | 该函数使用双向迭代器优化比较的次数。 |
4 | 对于随机访问迭代器,其运行时间复杂度为 O(log 2 N),但对于非随机访问迭代器,其运行时间复杂度为 O(N)。 | 由于其二叉查找树的实现方式,其运行时间复杂度始终为 O(log 2 N)。 |
下面是 CPU 执行时间的程序,用于说明这两个函数的运行时间。
讲解std::lower_bound()的程序:
演示 std::set::lower_bound() 的程序: