我们有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)或者具有更好的复杂性或内存分配?