【发布时间】:2015-10-18 15:17:19
【问题描述】:
我总是遇到一个案例:将两个对象映射到第三个对象。这就像函数 f(x,y) = z。有时,变量列表会更长。
这个概念的直接实现是这样的函数:
object myFun(Object x, Object y){
if(x==xVal1 && y== yVal1){
return zVal1;
}else if(x==xVal2 && y== yVal2){
return zVal2;
}else if(){ }else if(){
}
}
此实现仅在 x 和 y 的候选值的大小较小时有效。
有没有更好的数据结构设计。当 x 和 y 的值的组合空间增加时,上述实现将是不可能的(也不优雅)。
在乞讨时考虑了数组和地图。但是我无法解决双索引键问题的方式,因为 x 和 y 都确定了一个值。
【问题讨论】:
-
你能告诉我你想达到什么目标吗?
-
您可以使用一对作为 Map 的键。
std::map<std::pair<Object,Object>, Object>。对于上述情况,您实际上不需要它,因为在您的示例中x和y应该具有相同的值。所以检查x和y是否相同,如果是,只需使用x从地图中检索数据 -
@knightrider,您的评论可能会奏效。谢谢。
标签: java c++ algorithm dictionary data-structures