C++ 对于STL映射/set/multiset/multimap,如何查找大于或等于搜索键的第一个值?

C++ 对于STL映射/set/multiset/multimap,如何查找大于或等于搜索键的第一个值?,c++,stl,containers,C++,Stl,Containers,假设我有一组值,存储在std::set中: {1,2,6,8} 我有一个搜索键,比如说,3。我想把3放到一个函数中,得到第一个大于或等于3的值,在这种情况下,我想得到6 当然,map/set/multimap/and set中提供的find()函数将返回本例的结束迭代器。在这种情况下,是否有类似的函数返回6?您需要该函数 map<int, int> mymap = { 1,2,6,8 }; map<int,int>::iterator i = mymap.upper_bo

假设我有一组值,存储在std::set中:

{1,2,6,8}

我有一个搜索键,比如说,3。我想把3放到一个函数中,得到第一个大于或等于3的值,在这种情况下,我想得到6

当然,map/set/multimap/and set中提供的find()函数将返回本例的结束迭代器。在这种情况下,是否有类似的函数返回6?

您需要该函数

map<int, int> mymap = { 1,2,6,8 };
map<int,int>::iterator i = mymap.upper_bound(3); // returns an iterator to the '6' element.
map mymap={1,2,6,8};
迭代器i=mymap.上界(3);//返回“6”元素的迭代器。

哦,我的意思是,成员函数,而不是算法

如果集合中没有大于或等于搜索项的元素,它将返回end()。

是:
上限(X)
返回指向大于
X的第一个元素的迭代器。还有一个
下限(X)
函数,它返回指向不小于
X
的第一个元素的迭代器。因此,半开区间
[下限(X),上限(X)]
中的所有元素将等于X。

不是“等于X”,而是等效的。例如,在不区分大小写的集合中,“ABC”的下限可能是“ABC”。对于std::set,“半开区间中的所有元素”最多为1个元素。