我们有C++ map<double, class_name>
mymap
. 我们得到了一些 double X
。
任务是在 mymap 中找到与小于等于的最大键关联的值X
。如果X
小于mymap
返回一些之前声明的默认值的最低键。
我的方法是遍历mymap
并找到小于或等于的最大键X
double max = std::numeric_limits<double>::lowest();
for ( auto ii=mymap.begin(); ii!=mymap.end(); ++ii ) {
if (
(*ii).first <= value &&
(*ii).first > max
) {
max = (*ii).first;
}
}
if ( max==std::numeric_limits<double>::lowest() )
return defaultValue;
return colorset.find(max)->second;
这是正确的方法吗?我是 C++ 地图的新手,所以我想知道是否有更好的方法来实现这个任务?
我猜提议算法的复杂性是O(n)
,可能有办法找到它,O(log n)
或者具有更好的复杂性或内存分配?