I think (and please correct me if I'm wrong, because I'd like to know as well) it is undefined because the c++ standard doesn't specify when the decrement operator happens. Ie
Say ref points to series[3]..
Code:
series.push_back(*ref + *(--ref));
would this mean
Code:
series.push_back(series[3] + series[2]);
or
Code:
series.push_back(series[2] + series[2]);
?
As for the implementation of digit(), personally I would do something like
Code:
int digit (int pos)
{
if(pos <= 0) return 0;
if (pos > series.size())
{
if(pos > series.capacity())
series.reserve(pos);
for (int i=series.size();i<pos;i++)
series.push_back(series[i-1] + series[i-2]);
}
return series[pos-1];
}