【发布时间】:2013-12-11 12:01:09
【问题描述】:
我有这张地图:map<int, int > items。
给定一个键,我希望此映射返回与键对应的项目(如果存在),否则映射返回键立即小于给定键的项目。
例如,如果我有:
items[0]=0;
items[6]=10;
items[15]=18;
items[20]=22;
对于 key=15,我希望地图返回值为 18 的项目,否则对于 key=9,我希望地图返回值为 10 的项目。
我还没有找到适合这种情况的功能。但我是这样尝试的:
itlow=items.lower_bound(key);
if(!items.count(key))
itlow--;
return itlow->second;
这可以按我的意愿工作,在地图中输入最小值items[0]=0 作为默认值,但我知道itlow--; 这不是好的编程。我能怎么做?谢谢大家。
【问题讨论】:
-
递减迭代器没有什么问题(尽管在某些较旧的编译器上预递减可能在微观上更快,最好检查
itlow->first而不是items.count())。只要确保你没有递减超过前面。 -
好的,谢谢。我不确定那个项目——能做到。我确定该项目不会减少超过第一个项目,因为我不允许插入小于 1 的值。
标签: c++ dictionary lower-bound