-3
我念叨雙端隊列的實施文章(Deques)deque的實現細節
下面是相應的代碼:
template <class T>
class deque
{
public:
⋮
private:
size_type theSize;
T** blockmap;
size_type mapSize;
size_type firstBlock;
size_type firstElement;
const static size_type BlockSize = 4096;
static size_type numElementsInBlock;
};
template <class T>
deque<T>::dqPosition
deque<T>::indexAt (deque<T>::size_type n) const
{
dqPosition pos;
pos.blockNum = firstBlock;
if (n < numElementsInBlock - firstElement)
{
pos.elementNum = n + firstElement;
}
else
{
n -= numElementsInBlock - firstElement;
++pos.blockNum;
int k = n/numElementsInBlock;
pos.blockNum += k;
pos.elementNum = n - k*numElementsInBlock;
}
return pos;
}
中的插圖很顯然,對於firstBlock和firstElement初始值是2 爲什麼firstBlock和firstElement最初不是0?
請將相應的代碼部分放入您的問題中。否則,在這裏它不被認爲是有用的。 –