文章目录
- 一、查找大于等于指定值的元素 - set#lower_bound 函数
- 1、函数原型
- 2、代码示例
- 二、查找小于等于指定值的元素 - set#upper_bound函数
- 1、函数原型
- 2、代码示例
- 三、查找指定键值范围 - set#equal_range 函数
- 1、函数原型
- 2、代码示例
一、查找大于等于指定值的元素 - set#lower_bound 函数
1、函数原型
在 C++ 语言中的 标准模板库 ( STL , Standard Template Library ) 中的 std::set 集合容器 类提供了一个 lower_bound 成员函数 ;
该 lower_bound 函数返回一个迭代器对象 , 该 迭代器对象 指向在 set 有序集合中 第一个 大于等于 给定键值的元素 , 继续将迭代器 自增 , 即可访问 set 集合容器中 大于等于指定元素的后续元素 ;
如果集合中不存在这样的元素 , 即 集合中的最小值 都 大于 给定的值 , 则返回的 迭代器 将等于 end() 末尾迭代器 ;
std::set#lower_bound 函数原型如下 :
iterator lower_bound(const key_type& k) const;
- 参数解析 : 参数类型 key_type 是 std::set 中元素的类型 ;
- 返回值解析 : 返回值是 指向集合中元素的迭代器类型 ; 返回的 迭代器对象 指向在 set 有序集合中 第一个 大于等于 给定键值的元素 , 继续将迭代器 自增 , 即可访问 set 集合容器中 大于等于指定元素的后续元素 ;
2、代码示例
在下面的代码中 , 创建 set 集合容器 , 其中包含 { 1, 2, 4, 5 }
四个值 ;
// 初始化
set<int> mySet = { 1, 2, 4, 5 };
调用 lower_bound 函数 , 获取 set 集合容器中 , 大于等于 3 的最小元素 ;
mySet.lower_bound(3);
代码示例 :
#include "iostream"
using namespace std;
#include "set"
int main() {
// 初始化
set<int> mySet = { 1, 2, 4, 5 };
// 获取大于等于 3 的元素
auto it = mySet.lower_bound(3);
if (it != mySet.end()) {
cout << "找到了大于等于 3 的最小元素是 : " << *it << endl;
}
else {
cout << "没有大于等于 3 的元素 " << endl;
}
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
找到了大于等于 3 的最小元素是 : 4 请按任意键继续. . .
二、查找小于等于指定值的元素 - set#upper_bound函数
1、函数原型
在 C++ 语言中的 标准模板库 ( STL , Standard Template Library ) 中的 std::set 集合容器 类提供了一个 upper_bound 成员函数 ;
该 upper_bound 函数返回一个迭代器对象 , 该 迭代器对象 指向在 set 有序集合中 第一个 大于 给定键值的元素 , 继续将迭代器 自增 , 即可访问 set 集合容器中 大于指定元素的后续元素 ;
如果集合中不存在这样的元素 , 即 集合中的最小值 都 小于 给定的值 , 则返回的 迭代器 将等于 end() 末尾迭代器 ;
std::set#upper_bound 函数原型如下 :
iterator upper_bound(const key_type& k) const;
- 参数解析 : 参数类型 key_type 是 std::set 中元素的类型 ;
- 返回值解析 : 返回值是 指向集合中元素的迭代器类型 ; 返回的 迭代器对象 指向在 set 有序集合中 第一个 大于 给定键值的元素 , 继续将迭代器 自减 , 即可访问 set 集合容器中 大于指定元素的后续元素 ;
2、代码示例
代码示例 :
#include "iostream"
using namespace std;
#include "set"
int main() {
// 初始化
set<int> mySet = { 1, 2, 3, 4, 5 };
// 获取大于 3 的元素
auto it = mySet.upper_bound(3);
if (it != mySet.end()) {
cout << "找到了大于 3 的最小元素是 : " << *it << endl;
}
else {
cout << "没有大于 3 的元素 " << endl;
}
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
找到了大于 3 的最小元素是 : 4 请按任意键继续. . .
三、查找指定键值范围 - set#equal_range 函数
1、函数原型
在 C++ 语言中的 标准模板库 ( STL , Standard Template Library ) 中的 std::set 集合容器 类提供了一个 equal_range 成员函数 ;
equal_range 函数返回一对迭代器 , 分别表示集合中与给定键值相等的元素范围 ; 这两个迭代器放在 对组 中 , 类型为 std::pair<iterator, iterator> ;
返回的 两个迭代器 范围 是 前闭后开 区间 ;
由于 std::set
中的元素是唯一的 ,
- 如果键值存在 , 该迭代器 范围 包含一个元素 ;
- 如果键值不存在 , 该迭代器 范围 为空 ;
equal_range 函数原型如下 :
std::pair<iterator, iterator> equal_range(const key_type& k) const;
- 参数解析 : 参数类型 key_type 是 std::set 中元素的类型 ;
- 返回值解析 : pair<iterator, iterator> 类型的返回值 是一个包含两个迭代器的对 , 分别指向范围的开始和结束 , 注意 开始迭代器 是包含在内的 , 结束迭代器 是不包含在内的 ; 返回的 两个迭代器 范围 是 前闭后开 区间 ;
2、代码示例
代码示例 :
#include "iostream"
using namespace std;
#include "set"
int main() {
// 初始化
set<int> mySet = { 1, 2, 3, 4, 5 };
// 获取等于 3 的元素范围
auto pair_3 = mySet.equal_range(3);
if (pair_3.first != mySet.end()) {
cout << "找到了等 3 的元素"<< endl;
}
else {
cout << "没有找到了等 3 的元素" << endl;
}
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
找到了等 3 的元素 请按任意键继续. . .