C ++ Memoization понимание

Я пытался понять, как работает запоминание в C ++, поэтому я посмотрел на пример запоминания, используемый в Fib. последовательность.

std::map<int, int> fibHash;

int memoized_fib (int n)
{
    std::map<int, int>::iterator fibIter = fibHash.find(n);
    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;
}

Я был немного смущен тем, как работает fibHash [n]. Это просто содержит отдельные значения каждого FIB (#)? Кроме того, итератор проходит через индекс, чтобы найти правильное значение в таблице, и возвращает это? Например, fib (6) = найти fib (5) и fib (4), уже сохранены и просто добавить их?

Ответы на вопрос(3)

Ваш ответ на вопрос