当前位置:   article > 正文

【C++】STL 容器 - set 集合容器 ⑧ ( 查找大于等于指定值的元素 - set#lower_bound 函数 | 查找小于等于指定值的元素 - set#upper_bound函数 )_找到比指定值大的数据 c++

找到比指定值大的数据 c++






一、查找大于等于指定值的元素 - 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;
  • 1
  • 参数解析 : 参数类型 key_type 是 std::set 中元素的类型 ;
  • 返回值解析 : 返回值是 指向集合中元素的迭代器类型 ; 返回的 迭代器对象 指向在 set 有序集合中 第一个 大于等于 给定键值的元素 , 继续将迭代器 自增 , 即可访问 set 集合容器中 大于等于指定元素的后续元素 ;

2、代码示例


在下面的代码中 , 创建 set 集合容器 , 其中包含 { 1, 2, 4, 5 } 四个值 ;

    // 初始化
    set<int> mySet = { 1, 2, 4, 5 };
  • 1
  • 2

调用 lower_bound 函数 , 获取 set 集合容器中 , 大于等于 3 的最小元素 ;

mySet.lower_bound(3);
  • 1

代码示例 :

#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;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

执行结果 :

找到了大于等于 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;
  • 1
  • 参数解析 : 参数类型 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;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

执行结果 :

找到了大于 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;
  • 1
  • 参数解析 : 参数类型 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;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

执行结果 :

找到了等 3 的元素
请按任意键继续. . .

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/352260
推荐阅读
相关标签
  

闽ICP备14008679号