是否有一個函數與map::lower_bound
做同樣的事情,除了它返回一個新的子映射而不是一個迭代器?map :: lower_bound返回一個映射
編輯:該函數應返回的子圖,其包含的量,關鍵是等於或大於一定值(其給定爲輸入函數)更大的所有值。
是否有一個函數與map::lower_bound
做同樣的事情,除了它返回一個新的子映射而不是一個迭代器?map :: lower_bound返回一個映射
編輯:該函數應返回的子圖,其包含的量,關鍵是等於或大於一定值(其給定爲輸入函數)更大的所有值。
這樣的事情?
// Beware, brain-compiled code ahead!
template< typename K, typename V >
std::map<K,V> equal_or_greater(const std::map<K,V>& original, const K& k)
{
return std::map<K,V>(original.lower_bound(k), original.end());
}
編輯:看來你真的想upper_bound()
而不是lower_bound()
。
@Marcelo:實際上,那個'blah'不是偶然的。根據某些具體情況,我很難爲創建地圖的函數想出一個好名字。 'equal_or_greater'聽起來像是比較函數,不像創建地圖的函數。 – sbi 2010-05-16 13:48:24
公平點,sbi。我個人不介意以這種方式重載名稱,因爲參數往往可以解決混淆問題,而人類無論如何都很善於處理歧義。 – 2010-05-16 14:02:36
你期望這樣一個子圖包含什麼? – 2010-05-16 13:37:58
關於你的編輯:你不需要'upper_bound()'嗎? – sbi 2010-05-16 13:46:22
'lower_bound'將找到不小於給定鍵的第一個元素,這明顯包含鍵本身。 'upper_bound'將不包含密鑰。 – 2010-05-16 14:04:22