c ++ std :: map运行out_of_range

时间:2012-09-14 00:25:57

标签: c++ map

我正在解决SPOJ问题FLIB,我尝试使用这样的地图实现这一点 -

long long FiboSum(long long n) {
    if(n==1||n==0) return n;
    if(fiboDict.count(n)) return (long long) fiboDict.at(n);
    if(n%2==0) { 
        //calculate term -- value to that key
        fiboDict.insert(pair<long,long>(n,term));
    }
    else { 
        //calculate term
        fiboDict.insert(pair<long,long>(n,term));
    }
    return (long long) fiboDict.at(n);
}

fiboDict是地图,但问题需要我计算( 0 <= n < 2^51),但KEY值不能保持如此高的值,而我收到错误

terminate called after throwing an instance of 'std::out_of_range' what():  
map::at

我怎么能让它保持大值?或者如果有替代方案,请建议。

1 个答案:

答案 0 :(得分:2)

为什么不制作地图:

pair<long long,long long>

然后?