簡體   English   中英

使用STL map / set / multiset / multimap,如何找到大於或等於搜索鍵的第一個值?

[英]With a STL map/set/multiset/multimap, How to find the first value greater than or equal to the search key?

假設我有一組值,存儲在std :: set中:

{1,2,6,8}

我有一個搜索鍵,比方說,3。我想將3放入一個函數並獲得大於或等於3的第一個值,在這種情況下我想得到6。

當然,map / set / multimap /和set中提供的find()函數將返回此情況的結束迭代器。 在這種情況下是否有類似的函數可以返回6?

是: upper_bound(X)返回指向大於X的第一個元素的迭代器。 還有一個lower_bound(X)函數,它返回一個指向不小於X的第一個元素的迭代器。 因此,半開區間[lower_bound(X), upper_bound(X))中的所有元素將等於X.

你想要upper_bound函數。

map<int, int> mymap = { 1,2,6,8 };
map<int,int>::iterator i = mymap.upper_bound(3); // returns an iterator to the '6' element.

lower_bound

哎呀,我的意思是lower_bound ,成員函數,而不是算法。

如果集合中沒有任何內容大於或等於您的搜索項目,它將返回end()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM