C++ 映射迭代器遍历技术
我在声明迭代器以遍历映射并查找值时遇到问题。我在“fibiter”之前得到一个预期初始值设定项错误C++ 映射迭代器遍历技术,c++,map,iterator,C++,Map,Iterator,我在声明迭代器以遍历映射并查找值时遇到问题。我在“fibiter”之前得到一个预期初始值设定项错误 map <int, int> fibHash; int memoized_fib(int n) { map <int, int> iterator fibiter = fibHash.find(n); //ERROR HERE if(fibiter != fibHash.end()) return *fibiter; int
map <int, int> fibHash;
int memoized_fib(int n)
{
map <int, int> iterator fibiter = fibHash.find(n); //ERROR HERE
if(fibiter != fibHash.end())
return *fibiter;
int fib_val;
if(n <= 1)
fib_val = 1;
else
fib_val = memoized_fib(n - 1) + memoized_fib(n - 2);
fibHash[n] = fib_val;
return fib_val;
}
int main()
[..]
映射迭代器→ 迭代器
迭代器是在类映射中定义的typedef。
您可以在第139行中查看GCC 4.6.3附带的标准库的实现,您有:
typedef typename _Rep_type::iterator iterator;
由于typedef属于类的定义,您应该添加:以便编译器知道在哪里可以找到它。映射迭代器→ 迭代器
迭代器是在类映射中定义的typedef。
您可以在第139行中查看GCC 4.6.3附带的标准库的实现,您有:
typedef typename _Rep_type::iterator iterator;
由于typedef属于类的定义,您应该添加:以便编译器知道在哪里可以找到它。您忘记使用作用域解析运算符::。编译器认为您声明了一个名为iterator的映射,因此在找到fibiter时会非常困惑
是您想要的您忘记使用范围解析运算符::。编译器认为您声明了一个名为iterator的映射,因此在找到fibiter时会非常困惑
是你想要的吗你想买一双:'s吗?你想买一双:'s吗?