set容器upper_bound和lower_bound为什么返回的是同一个迭代器
时间: 2024-04-01 14:29:49 浏览: 94
set容器是C++标准库中的一种关联容器,它按照特定的排序规则存储元素,并且每个元素只能出现一次。set容器提供了两个成员函数:upper_bound和lower_bound,它们用于查找指定值的上界和下界。
lower_bound函数返回一个迭代器,该迭代器指向第一个大于或等于指定值的元素。upper_bound函数返回一个迭代器,该迭代器指向第一个大于指定值的元素。
当set容器中不存在等于指定值的元素时,lower_bound和upper_bound函数返回的迭代器是相同的。这是因为在set容器中,每个元素只能出现一次,所以不存在多个相同值的情况。当不存在等于指定值的元素时,lower_bound函数返回的迭代器指向第一个大于指定值的元素,而upper_bound函数也返回同一个迭代器,因为它们都指向第一个大于指定值的元素。
相关问题
set.lower_bound和set.upper_bound
set.lower_bound和set.upper_bound是STL set容器中的两个函数,用于查找set中第一个大于等于某个值的元素和第一个大于某个值的元素。
具体来说,set.lower_bound函数接受一个参数,返回一个指向set中第一个大于等于该参数的元素的迭代器,如果不存在这样的元素,则返回set.end()。而set.upper_bound函数也接受一个参数,返回一个指向set中第一个大于该参数的元素的迭代器,如果不存在这样的元素,则返回set.end()。
下面是一个使用set.lower_bound和set.upper_bound的例子:
```cpp
#include <iostream>
#include <set>
int main() {
std::set<int> myset = {1, 2, 3, 4, 5};
// 使用lower_bound查找第一个大于等于3的元素
auto it = myset.lower_bound(3);
if (it != myset.end()) {
std::cout << "The first element >= 3 is " << *it << std::endl;
}
// 使用upper_bound查找第一个大于3的元素
it = myset.upper_bound(3);
if (it != myset.end()) {
std::cout << "The first element > 3 is " << *it << std::endl;
}
return 0;
}
```
输出结果为:
```
The first element >= 3 is 3
The first element > 3 is 4
```
upperbound找不到_upper_bound 和lower_bound 的返回值问题
在 C++ 中,`upper_bound` 和 `lower_bound` 是 STL 中的两个函数,它们用于在有序的容器(如 vector、set、map)中查找某个元素的位置。它们的返回值是一个迭代器,指向第一个大于(或等于)查找元素的位置(`upper_bound`),或者第一个大于查找元素的位置(`lower_bound`)。如果查找元素不存在,那么它们的返回值就是指向该元素应该插入的位置的迭代器。
如果你在使用 `upper_bound` 和 `lower_bound` 函数时遇到了找不到返回值的问题,可能是以下几个原因导致的:
1. 容器没有按照从小到大的顺序排列,导致函数无法正确查找元素。
2. 查找元素不存在,导致函数返回插入位置的迭代器。
3. 函数的返回值被你的代码忽略或者错误处理,导致无法正确获取返回值。
你可以检查一下你的代码,看看是不是出现了以上的问题。如果还有其他问题,请提供更多的信息,我会尽力帮助你解决问题。
阅读全文