// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_CONTAINERS_RING_BUFFER_H_ #define BASE_CONTAINERS_RING_BUFFER_H_ #include <stddef.h> #include <array> #include "base/check.h" #include "base/memory/raw_ref.h" namespace base { // base::RingBuffer uses a fixed-size array, unlike base::circular_deque and // std::deque, and so, one can access only the last |kSize| elements. Also, you // can add elements to the front and read/modify random elements, but cannot // remove elements from the back. Therefore, it does not have a |Size| method, // only |BufferSize|, which is a constant, and |CurrentIndex|, which is the // number of elements added so far. // // If the above is sufficient for your use case, base::RingBuffer should be more // efficient than base::circular_deque. template <typename T, size_t kSize> class RingBuffer { … }; } // namespace base #endif // BASE_CONTAINERS_RING_BUFFER_H_