我試圖使用動態編程來實現斐波那契。這是我的.h文件:如何檢查C++映射中是否存在值
#ifndef DYNAMICPROGRAMMING_H
#define DYNAMICPROGRAMMING_H
#include <map>
class DynamicProgramming
{
public:
DynamicProgramming();
~DynamicProgramming();
int Fibonacci(int value);
private:
};
#endif // DYNAMICPROGRAMMING_H
下面是我的.cpp文件中的相關部分:
int DynamicProgramming::Fibonacci(int value)
{
int result;
std::map<int,int>fibonacci_storage;
std::map<int,int>::iterator valueFinder;
if (value == valueFinder->second){
return fibonacci_storage[value];
}
if (value <= 2){
result = 1;
} else {
result = Fibonacci(value - 1) + Fibonacci(value - 2);
}
fibonacci_storage.insert(std::pair<int,int>(value,result));
return result;
}
我的錯誤是從該行未來:if (value == valueFinder->second)
。這就是它說:
could not convert '((DynamicProgramming*)this)->DynamicProgramming::fibonacci_storage.std::map<_Key, _Tp, _Compare, _Alloc>::find [with _Key = int, _Tp = int, _Compare = std::less<int>, _Alloc = std::allocator<std::pair<const int, int> >, std::map<_Key, _Tp, _Compare, _Alloc>::iterator = std::_Rb_tree_iterator<std::pair<const int, int> >, std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]((*(const key_type*)(& value)))' from 'std::map<int, int>::iterator {aka std::_Rb_tree_iterator<std::pair<const int, int> >}' to 'bool'
它看起來對我來說,這是一個很簡單的錯誤,但我不知道所有的東西手段。有人可以幫助我,我真的很想掌握這種語言,它似乎是非常有用的。
您的錯誤與您的代碼不符。 –