📌  相关文章
📜  C++中std :: set :: lower_bound和std :: lower_bound之间的区别(1)

📅  最后修改于: 2023-12-03 15:29:53.285000             🧑  作者: Mango

C++中std :: set :: lower_bound和std :: lower_bound之间的区别

在C ++中,lower_bound是用于在排序的容器中查找某个元素的方法。它返回指向首个不小于给定值的元素的迭代器。在STL中,lower_bound函数可用于任何支持随机访问迭代器的容器,如数组,向量和映射。然而,set是一种关联容器,它存储唯一的元素且自动排序。

C ++ STL库中包含两种名为lower_bound的方法。一种是set :: lower_bound,另一种是std :: lower_bound。这两种方法之间有以下区别:

1. 形参

在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的参数类型是迭代器类型(iteratorconst_iterator)。

std::vector<int> vec = {1, 2, 4, 5, 6};
auto result = std::lower_bound(vec.begin(), vec.end(), 3);
2. 返回值类型

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的行为可能不同于预期。