c++ - Map迭代器遍历技术

标签 c++ dictionary iterator

我在声明遍历 map 并查找值的迭代器时遇到问题。我收到“‘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 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()
[..]

最佳答案

您忘记使用范围解析运算符,:: .编译器认为你声明了一个 map<int, int>名为 iterator ,因此当它找到 fibiter 时会非常困惑.

map<int, int>::iterator fibiter

是你想要的

关于c++ - Map迭代器遍历技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754949/

相关文章:

c++ - 标准模板库列表 - 双向链接还是循环链接?

for-loop - Python 嵌套 for 循环与用于重复迭代函数提供的列表的生成器

c++ - 如何使用以下模板为 map 声明迭代器 - std::map<std::string, T> my_map?

c++ - 无法在 Matlab UNIX 上打开串口

c++ - 禁用 C++ vector 的边界检查

C++函数作用域

c++ - 使用配置文件部署可执行文件

c++ - 访问映射中元素的成员,其值为 C++ 中的抽象基类

c# - 为什么 C# 中的字典有一个 .Distinct() 扩展名?

javascript - 使用map返回每个数组中的最大数