跳转到内容

libs::RingBuffer API

文档稀疏
符号
21
已记录
10
修订版本
0.1.0+855c407f828e

11 / 21 个公开 API 符号没有说明。

命名空间

1

1

函数

15

libs::RingBuffer::back

                    const T * libs::RingBuffer< T, Capacity, Overwrite >::back () const noexcept
                  

查看队尾元素(最新入队的元素,不弹出)。 队尾元素指针,队列为空时返回 nullptr。

libs/utils/ring_buffer/RingBuffer.hpp:140

libs::RingBuffer::capacity

                    static constexpr std::size_t libs::RingBuffer< T, Capacity, Overwrite >::capacity () noexcept
                  

返回实际可存储的元素个数。 由于需要留出一个空槽位,所以有效容量比模板参数少 1。

libs/utils/ring_buffer/RingBuffer.hpp:176

libs::RingBuffer::clear

                    void libs::RingBuffer< T, Capacity, Overwrite >::clear () noexcept
                  

清空缓冲区中的所有元素。 这个操作只会复位读写指针,不会改写底层存储。

libs/utils/ring_buffer/RingBuffer.hpp:152

libs::RingBuffer::front

                    const T * libs::RingBuffer< T, Capacity, Overwrite >::front () const noexcept
                  

查看队头元素(不弹出)。 队头元素指针,队列为空时返回 nullptr。

libs/utils/ring_buffer/RingBuffer.hpp:128

libs::RingBuffer::pop

                    T * libs::RingBuffer< T, Capacity, Overwrite >::pop () noexcept
                  

返回队头元素指针并前移读指针。 调用方拿到的是缓冲区内部元素的直接地址,因此应该尽快消费,不要长期持有。

libs/utils/ring_buffer/RingBuffer.hpp:114

libs::RingBuffer::pop

                    bool libs::RingBuffer< T, Capacity, Overwrite >::pop (T &out) noexcept
                  

弹出一个元素到 out。 空队列时返回 false。这个接口适合调用方需要保留一份拷贝的情况。

libs/utils/ring_buffer/RingBuffer.hpp:98

libs::RingBuffer::push

                    bool libs::RingBuffer< T, Capacity, Overwrite >::push (Builder &&builder) noexcept
                  

使用 builder 原地构造元素,避免额外拷贝。 builder 会直接拿到队头位置的引用,适合构造较大的对象或者需要分步骤填充对象的场景。

libs/utils/ring_buffer/RingBuffer.hpp:60

libs::RingBuffer::push

                    bool libs::RingBuffer< T, Capacity, Overwrite >::push (const T &value) noexcept
                  

直接把一个元素拷贝入队。 true 表示入队成功;如果缓冲区已满且不允许覆盖,则返回 false。

libs/utils/ring_buffer/RingBuffer.hpp:29

变量

3

文件

1

libs/utils/ring_buffer/RingBuffer.hpp

固定容量环形缓冲区。 syhanjin 2026-02-24 这个容器适合生产者和消费者之间做小规模缓存,尤其是在中断和任务之间传递短消息时。 容量设计上会保留一个空槽位来区分“满”和“空”;如果 Overwrite=true,缓冲区满时会自动丢弃最旧元素。

libs/utils/ring_buffer/RingBuffer.hpp