跳转到内容

libs::RingBuffer API

文档稀疏
符号
21
已记录
10
类型
1
继承关系
0
源码分支
main

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

共 1 个类型

类型目录
类

libs::RingBuffer

查看源码

上游未提供类型说明。

构造与析构

1

成员函数

14

back

函数公开const
        const T * libs::RingBuffer< T, Capacity, Overwrite >::back () const noexcept
      

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

libs/utils/ring_buffer/RingBuffer.hpp:140

capacity

函数公开静态
        static constexpr std::size_t libs::RingBuffer< T, Capacity, Overwrite >::capacity () noexcept
      

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

libs/utils/ring_buffer/RingBuffer.hpp:176

clear

函数公开
        void libs::RingBuffer< T, Capacity, Overwrite >::clear () noexcept
      

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

libs/utils/ring_buffer/RingBuffer.hpp:152

front

函数公开const
        const T * libs::RingBuffer< T, Capacity, Overwrite >::front () const noexcept
      

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

libs/utils/ring_buffer/RingBuffer.hpp:128

pop

函数公开
        T * libs::RingBuffer< T, Capacity, Overwrite >::pop () noexcept
      

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

libs/utils/ring_buffer/RingBuffer.hpp:114

pop

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

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

libs/utils/ring_buffer/RingBuffer.hpp:98

push

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

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

libs/utils/ring_buffer/RingBuffer.hpp:60

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