本文主要是介绍c++ upper_bound和lower_bound,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
upper_bound和lower_bound 是C++的STL(标准模板库)中的两个函数,用于在一个有序的容器中查找特定元素的上界和下界。
upper_bound函数的作用是在一个有序容器中查找大于某个值val的第一个位置。它返回一个迭代器,该迭代器指向容器中第一个大于val的元素。如果容器中不存在大于val的元素,则返回一个指向容器末尾的迭代器。
lower_bound函数的作用是在一个有序容器中查找大于等于某个值val的第一个位置。它返回一个迭代器,该迭代器指向容器中第一个大于等于val的元素。如果容器中不存在大于等于val的元素,则返回一个指向容器末尾的迭代器。
这两个函数常用于二分查找算法中,可用于在有序数组、向量和set等容器中进行查找。使用这两个函数需要注意:
- 容器必须是有序的,否则结果不可预测。
- 查找的值val必须与容器元素的类型相同,或者可以通过比较运算符进行比较。
- 返回的迭代器指向容器中的位置,可以通过解引用操作获得具体的元素值。
下面是一些示例代码,演示了如何使用upper_bound和lower_bound函数:
#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> nums = {1, 2, 3, 4, 5, 5, 6};// 使用lower_bound查找大于等于3的第一个位置auto lower = std::lower_bound(nums.begin(), nums.end(), 3);std::cout << "lower bound of 3: " << *lower << std::endl;// 使用upper_bound查找大于5的第一个位置auto upper = std::upper_bound(nums.begin(), nums.end(), 5);std::cout << "upper bound of 5: " << *upper << std::endl;return 0;
}
输出结果为:
lower bound of 3: 3
upper bound of 5: 6
在这个示例中,lower_bound函数返回了指向容器中第一个大于等于3的元素(即3本身)的迭代器,而upper_bound函数返回了指向容器中第一个大于5的元素(即6)的迭代器。
这篇关于c++ upper_bound和lower_bound的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!