簡體   English   中英

從地圖檢查范圍的最佳方法

[英]Best way to check a range from a map

我目前有一個std::map<int,int>值像這樣

Key Value
60   2
84   3 
99   5

現在我總是從一個方法得到一個整數

int a = SomeMethod();

我想做的是檢查該數字是否在鍵的范圍內,如果該數字為45,則它小於鍵值60,所以我應該取回2。另一個示例是,該數字是否比鍵值大75 60,並且小於鍵值84,因此我應該找回3。我目前正在考慮的方法是一旦有了數字。 我將遍歷地圖,直到遇到一個大於我想要的數字的數字。 如果是這樣,我將從地圖上將其刪除。然后繼續執行此操作,直到找到適合我條件的數字為止。 我想知道是否有更好的方法來解決這個問題?

使用std::map::lower_bound 它使用不小於給定參數的鍵將迭代器返回到第一項。

int a = SomeMethod();
auto it = myMap.lower_bound(a);
int val = someNotFoundSentinelValue;
if(it != myMap.end()
  val = it->second;

暫無
暫無

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

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