2016-10-02 54 views
0

我有std::map<int, object>即使邊界鍵不存在,我是否可以迭代std :: map鍵範圍?

如果地圖包含:

std::pair<1, obj1> 
std::pair<3, obj2> 
std::pair<4, obj3> 
std::pair<6, obj4> 
std::pair<8, obj5> 
std::pair<9, obj6> 
std::pair<14, obj7> 

我可以在這個地圖可以從子虛烏有鍵迭代,如i=5..10(因爲不會有任何實際鍵5,並在圖10)?我想用這樣的值來獲得輸出,如:

std::pair<6, obj3> 
std::pair<8, obj3> 
std::pair<9, obj3> 

另外,有一些其他的容器,可以做到這一點?我不想使用向量,因爲在我的程序中,實際上包含值的鍵之間存在潛在的巨大差距,並且我不希望在只有少數項目時迭代數千個空索引,例如。

+1

你想low_bound –

回答

1

您可以使用lower_bound()upper_bound()方法std::map來找到給定鍵的最近值的迭代器。有關這些方法如何工作的文檔,請查閱您的C++書籍。

一旦獲得最近鍵的迭代器,就可以照常進行迭代。

+0

謝謝!這正是我需要知道的。我應該檢查std :: map方法。 – Ashley

相關問題