是否有一个函数与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