C++ STL中的multiset lower_bound()及示例
介绍
multiset是C++ STL库中的一个容器,与set很相似,但是可以存储多个相同的元素。lower_bound()是multiset中的一个非常重要的函数,可以用来查找第一个大于等于某个值的元素。
lower_bound()函数
lower_bound()函数的声明如下:
iterator lower_bound (const value_type& val);
该函数接受一个参数val,返回一个迭代器,指向multiset中第一个大于等于val的元素。如果不存在这样的元素,则返回multiset的end()迭代器。
下面是函数的使用示例:
#include <iostream>
#include <set>
using namespace std;
int main()
{
multiset<int> ms;
ms.insert(1);
ms.insert(2);
ms.insert(2);
ms.insert(3);
ms.insert(4);
ms.insert(4);
ms.insert(4);
ms.insert(5);
multiset<int>::iterator it = ms.lower_bound(4);
if (it == ms.end()) {
cout << "Not found" << endl;
} else {
cout << *it << endl;
}
return 0;
}
在上述示例中,我们创建了一个multiset,插入了多个元素。然后,我们调用lower_bound()函数,传入参数4。该函数返回一个迭代器,指向multiset中第一个大于等于4的元素,这个元素是4。最后,我们输出迭代器指向的元素。
注意事项
- multiset中的元素是按照从小到大的顺序排列的。因此,lower_bound()返回的元素是第一个大于等于给定值的元素。
- multiset中可能会有多个相同的元素。因此,当我们调用lower_bound()函数时,它可能返回任意一个相同元素的迭代器。如果要获取该元素的个数,我们需要使用multiset中count()函数。
- 如果要查找第一个大于某个值的元素,可以使用upper_bound()函数。
结论
lower_bound()是multiset中的一个非常有用的函数,可以用来查找第一个大于等于某个值的元素。我们在使用该函数时,需要注意multiset中可能有多个相同的元素,也要注意multiset中元素的顺序,以免出现意外的结果。