C++中std::set::upper_bound和std::upper_bound的区别
集合是一种关联容器,其中每个元素都必须唯一,因为元素的值标识了它。一旦将元素添加到集合中,其值就不能被修改,尽管可以删除并添加该元素的修改值。
与Set相关的功能:
- begin() : 返回指向集合中第一个元素的迭代器。
- end() : 返回指向集合中最后一个元素之后的理论元素的迭代器。
- size() : 返回集合中元素的数量。
- max_size() : 返回集合可以容纳的最大元素数量。
- empty() : 返回集合是否为空。
本文重点介绍C++中std::set::upper_bound和std::upper_bound之间的区别。
C++中的std::upper_bound()
C++中的upper_bound()方法用于返回指向范围[first,last)中第一个大于给定值的元素的迭代器。
C++中的std::set::upper_bound()
set::upper_bound()是C++ STL中的内置函数,它返回指向容器中刚刚大于传递的值“x”的元素的迭代器。如果传递的参数键超过容器中的最大值,则返回的迭代器指向set容器中的最后一个元素。
std::upper_bound() vs std::set::upper_bound()
下面是std::upper_bound()和std::set::upper_bound()之间的一些差异。
序号 | std::upper_bound() | std::set::upper_bound() |
---|---|---|
1 | 语法 -std::upper_bound(ForwardIterator first,ForwardIterator last,const T& val)。 | 语法 -std::upper_bound(const value_type& val)。 |
2 | std::upper_bound具有随机访问迭代器和非随机访问迭代器。 | std::set::upper_bound优化了双向迭代器。 |
3 | 此函数通过随机访问迭代器优化比较次数,这对于随机访问迭代器是有效的。 | 此函数使用双向迭代器优化比较次数。 |
4 | 对于随机访问迭代器,运行时间复杂度为O(log2N),但对于非随机访问迭代器,它为O(N)。 | 运行时间复杂度始终为O(log2N),因为它采用了二叉搜索树实现。 |
在下面的示例中,我们说明了两个函数所需的CPU执行时间。通常情况下,首选std::set::upper_bound()方法。
示例:std::upper_bound()
下面是用于说明std::upper_bound()函数的C++程序。
输出
例:std :: set :: upper_bound()
下面是C ++程序,说明std :: set :: upper_bound()函数。
输出