C ++ Memoization Verständnis

Ich habe versucht zu verstehen, wie Memoization in C ++ funktioniert, und habe mir daher ein Beispiel für Memoization in Fib angesehen. Sequenz.

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;
}

Ich war ein wenig verwirrt darüber, wie das FibHash [n] funktioniert. Enthält es nur die einzelnen Werte jeder Fib (#)? Außerdem durchläuft der Iterator den Index, um nach dem richtigen Wert in der Tabelle zu suchen, und gibt diesen zurück. Zum Beispiel fib (6) = finde fib (5) und fib (4), die bereits gespeichert sind und füge sie einfach hinzu?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage