set 中的 upper——bound
时间: 2023-10-23 16:08:27 浏览: 63
`set` 是 C++ STL 中的一个容器,存储元素的顺序是按照元素的键值自动排序的。`upper_bound` 是 `set` 容器提供的一个成员函数,用于查找第一个大于指定键值的元素的迭代器。具体来说,`set::upper_bound(key)` 返回一个迭代器,指向第一个大于 `key` 的元素。如果 `key` 大于等于所有元素,则返回 `set` 的 `end()` 迭代器。注意,`upper_bound` 的返回值是一个迭代器,而不是元素本身。
相关问题
set的upper_bound
`std::set` 是 C++ 中的一个关联容器,它按照严格弱序排序存储元素,并且每个元素只能在容器中出现一次。`std::set` 提供了一系列函数来进行元素的查找和插入操作,其中 `upper_bound()` 是其中之一。
`upper_bound()` 函数用于在有序集合中查找大于给定值的第一个元素的迭代器。它返回一个指向大于给定值的第一个元素的迭代器,如果不存在这样的元素,则返回指向集合末尾的迭代器。
下面是一个示例代码,演示了如何使用 `upper_bound()` 函数:
```cpp
#include <iostream>
#include <set>
int main() {
std::set<int> mySet = {10, 20, 30, 40, 50};
// 使用 upper_bound() 查找大于 25 的第一个元素
auto it = mySet.upper_bound(25);
// 如果存在大于 25 的元素,则输出它
if (it != mySet.end()) {
std::cout << "First element greater than 25: " << *it << std::endl;
} else {
std::cout << "No element greater than 25 found" << std::endl;
}
return 0;
}
```
输出结果为:First element greater than 25: 30
在上面的代码中,我们创建了一个有序集合 `mySet`,其中包含一些整数。然后,我们使用 `upper_bound()` 函数查找大于 25 的第一个元素的迭代器。如果找到了这样的元素,我们输出它;否则,我们输出一个提示消息。
注意,`upper_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
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)