69 : Data(RoundUpToPowerOfTwo(capacity))
70 , LastIndex(Data.size() - 1)
79 Data[Tail] = std::move(item);
80 Tail = (Tail + 1) & LastIndex;
97 Head = (Head + 1) & LastIndex;
100 bool TryPop(T& item) {
104 item = std::move(Data[Head]);
105 Head = (Head + 1) & LastIndex;
114 return (Data.size() + Tail - Head) & LastIndex;
126 static size_t RoundUpToPowerOfTwo(
size_t value) {
128 while (power < value) {
134 void EnsureCapacity() {
135 if (
Size() == Data.size() - 1) [[unlikely]] {
136 std::vector<T> newData(Data.size() * 2);
138 for (
size_t i = 0; i < size; ++i) {
139 newData[i] = std::move(Data[(Head + i) & LastIndex]);
141 Data = std::move(newData);
144 LastIndex = Data.size() - 1;
151 size_t LastIndex = 0;