我正在为应该表现得像一个圆形数组的东西保留一个索引计数器。我强制大小为 2 的幂,因此size_t MASK = size_ - 1
在像这样遍历时用于替换模数:
index_ = (++index_) & MASK;
但问题是,在我的情况下,我有时会意识到我可以重用我下次在这里分发的那个索引,所以当这种情况发生时,我有这样的事情:
if (canReuseLastUsedIndex())
--index_;
但是当最后一次抛出index_
为零时,这会崩溃,因为这不会环绕到size_
(即MASK+1
)。有没有办法让这种情况发生?或者非常快的东西?(即最好不必说if (index_) --index_; else index_ = size_
:)