📅  最后修改于: 2023-12-03 15:29:53.285000             🧑  作者: Mango
在C ++中,lower_bound
是用于在排序的容器中查找某个元素的方法。它返回指向首个不小于给定值的元素的迭代器。在STL中,lower_bound
函数可用于任何支持随机访问迭代器的容器,如数组,向量和映射。然而,set
是一种关联容器,它存储唯一的元素且自动排序。
C ++ STL库中包含两种名为lower_bound
的方法。一种是set :: lower_bound
,另一种是std :: lower_bound
。这两种方法之间有以下区别:
在C ++中,set :: lower_bound
的参数类型是关键字(key_type
)类型。因为set
是关联容器,所以可以通过其关键字进行访问和搜索。
std::set<int> myset = {1, 2, 4, 5, 6};
auto result = myset.lower_bound(3);
而std :: lower_bound
的参数类型是迭代器类型(iterator
或const_iterator
)。
std::vector<int> vec = {1, 2, 4, 5, 6};
auto result = std::lower_bound(vec.begin(), vec.end(), 3);
set :: lower_bound
返回一个迭代器,指向首个关键字等于或大于函数参数的元素。这是由于set
所有元素都是唯一的且按关键字自动排序的。
std::set<int> myset = {1, 2, 4, 5, 6};
auto result = myset.lower_bound(3); // 返回指向数字4的迭代器
而std :: lower_bound
返回一个迭代器,它指向序列中首个不小于给定值的元素。
std::vector<int> vec = {1, 2, 4, 5, 6};
auto result = std::lower_bound(vec.begin(), vec.end(), 3); // 返回指向数字4的迭代器
在使用std :: lower_bound
进行搜索时,只能搜索适配器元素的迭代器,而set :: lower_bound
可以搜索关键字类型。
在使用set :: lower_bound
时,要注意容器中有重复元素的情况。因为set
存储的元素都是唯一的,所以lower_bound
方法将返回第一个大于或等于给定值的元素。在处理重复元素的情况下,lower_bound
的行为可能不同于预期。