我找不到类似的东西。我发现 boost 库有一个实现,但我不确定我是否只想插入整个库以实现循环缓冲区。
Qt的公共API中没有这样的类型。如果你愿意使用Qt的内部结构,有两类需要注意:
-
QRingBuffer
存储字节,专为 I/O 缓冲量身定制。
QSerialPort
等使用。QT += core-private # In the .pro file #include <private/qringbuffer_p.h>
https://github.com/qt/qtbase/blob/5.9/src/corelib/tools/qringbuffer_p.h
-
QCircularBuffer
存储任意类型,并且是通用的。提供合理的 STL 样式 API。
QT += 3dcore-private # In the .pro file #include <private/qcircularbuffer_p.h>
https://github.com/qt/qt3d/blob/5.9/src/core/resources/qcircularbuffer_p.h
注意:将私有模块添加到项目文件后,您必须重新运行 qmake,或者理想情况下删除构建文件夹。仅仅重建项目不会获得要编译的代码!
有一个叫QCircularBuffer
.
http://doc.qt.io/archives/qt-5.5/qt3d-qcircularbuffer.html#details
QCircularBuffer<T>
是Qt的通用容器类之一(来自文档(。因此,此类将满足容器类的所有基本要求。
需要包括 3dcore 库(Qt3D
标题(。
检查您的Qt版本是否支持它。我在Qt5.5中看到了这一点。