温馨提示:这篇文章已超过450天没有更新,请注意相关的内容是否还可用!
摘要:,,本文简要介绍了C++中的lower函数。该函数主要用于将字符串中的字符转换为小写形式。文章详细解释了lower函数的工作原理和使用方法,包括其语法、参数以及返回值。通过本文,读者可以了解如何在C++程序中使用lower函数来统一字符串中的字符为小写形式,从而方便进行字符串处理和分析。
这两个函数是在我解决LeetCode问题时遇到的,看到不熟悉的函数lower_bound和upper_bound,我感到困惑,我在C++官方文档中学习,但例子较为基础,虽然我能理解,但在看到别人使用这两个函数时,他们使用的参数有时是不同的仿函数,这让我有些迷茫,我搜索了相关资料,但大部分讲解都集中在它们的第一个接口,经过多次查阅文档和尝试调试,我最终对其有了深入的理解,于是总结如下。
函数详解
使用这两个函数的前提是在有序的数组中,这是因为它们的底层实现是二分查找,如果对二分查找不熟悉的读者,建议阅读相关详解。
1 lower_bound函数详解
函数原型:
原型1:
template <class ForwardIterator, class T> ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val);
原型2:
template <class ForwardIterator, class T, class Compare> ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val, Compare comp);
模板参数解释:
ForwardIterator一个迭代器,例如对于vector v,v数组的首元素就是v.begin()。
T& val一个T类型的变量。
Compare一个比较器,可以传递仿函数对象或函数指针。
函数作用:
在有序的情况下,lower_bound返回指向第一个值不小于val的位置,也就是返回第一个大于等于val值的位置(通过二分查找)。
参数、返回值含义:
first,last迭代器在排序序列的起始位置和终止位置,使用的范围是[first,last),包括first到last位置中的所有元素。
val在[first,last)范围内,找到大于等于val值的位置,返回其迭代器。
comp主要针对原型二,传递一个函数对象或函数指针,按照它的方式进行比较。
返回值返回一个迭代器,指向第一个大于等于val的位置。
举例说明(原型一):
#include <iostream> #include <vector> #include <algorithm> // 需要包含algorithm库来使用sort和lower_bound函数 using namespace std; int main() { vector<int> v = {3, 4, 1, 2, 8}; // 先排序 sort(v.begin(), v.end()); // 排序后:1 2 3 4 8 // 定义两个迭代器变量 vector<int>::iterator iter1; vector<int>::iterator iter2; // 在动态数组中寻找 >=3 出现的第一个数 并以迭代器的形式返回 iter1 = lower_bound(v.begin(), v.end(), 3); // iter1指向3 // 在动态数组中寻找 >=7 出现的第一个数 并以迭代器的形式返回 iter2 = lower_bound(v.begin(), v.end(), 7); // iter2指向8的位置(注意是位置,不是值) cout << "The first element >= 3 is: " << *iter1 << endl; // 输出:The first element >= 3 is: 3(因为iter1指向的是值3的位置) cout << "The first element >= 7 is at position: " << distance(v.begin(), iter2) << endl; // 输出类似:The first element >= 7 is at position: 4(因为iter2指向的是值8的位置在数组中的位置) 而不是值本身 。 接下来是upper_bound函数的详细解释和示例代码。 三、常考面试题 四、共勉部分保持不变。
还没有评论,来说两句吧...