循環配列のように振る舞うべきものに対するインデックスカウンターを保持しています。サイズを強制的に 2 のべき乗にsize_t MASK = size_ - 1
するため、次のようにトラバースするときにモジュラスを置き換えるために使用します。
index_ = (++index_) & MASK;
しかし、問題は、私の状況では、次回ここで配布したインデックスを再利用できることに気付くことがあります。その場合、次のようなものがあります。
if (canReuseLastUsedIndex())
--index_;
index_
しかし、これはラップアラウンドしないため、最後のディッシュアウトがゼロのときにクラッシュしますsize_
(つまりMASK+1
)。これを実現するためのbitopの方法はありますか?それとも非常に速いものですか?(つまり、できれば言う必要はありません: if (index_) --index_; else index_ = size_
)