I am a mathematician trying to update some code written by someone else and I am a bit confused about what exactly is going on (memory wise) with the following code. Can anyone offer some insight?

list<vector<int>*>::iterator ListIterator;
vector<int>& thisVec = (*(*ListIterator));

This section is creating an iterator of a list based on an int vector. This will be used to traverse the list which is not shown here.
list*>::iterator ListIterator;
vector& thisVec = (*(*ListIterator));
In this section you are first de-referencing the pointer *ListIterator. The problem is that it de-references to another pointer and that is why the second * is needed.