2017-05-25 161 views
1

我找不到任何類似的東西。 我發現boost庫有一個實現,但我不確定我想只爲循環緩衝區實現插入整個庫。Qt是否有循環緩衝區?

+0

由於boost是一個僅頭文件庫,你不只是需要循環緩衝相關的文件? – NathanOliver

+0

@NathanOliver一方面,最終編譯的可執行文件或庫只會生成與循環緩衝區相關的代碼。另一方面,你需要下載整個boost庫(我使用的每個boost庫都有很多其他boost庫的依賴) – Justin

回答

0

有一個叫QCircularBuffer

http://doc.qt.io/archives/qt-5.5/qt3d-qcircularbuffer.html#details

QCircularBuffer<T>是Qt的通用容器類(來自文檔)中的一個。所以這個類將滿足容器類的所有基本要求。

需要包含3dcore庫(Qt3D標題)。

檢查你的Qt版本是否支持它。我在Qt5.5中看到了這個。

+1

爲了單個容器而投入另一個整個模塊的開銷很大。它應該在QtCore中... – dtech

+0

@dtech我同意你100% – Naidu

+0

這個類不存在了。這是一個短暫的API錯誤。不過,你當然可以將源代碼複製到自己的代碼中。 –

1

在Qt的公共API中沒有這樣的類型。如果你願意使用Qt的內部,有兩類注意:

  1. 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

  2. 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的,或者理想刪除build文件夾。 僅僅重建該項目將無法獲得編譯的代碼!

+0

這些只是爲5.X.X版本?我們仍然使用4.X.X版本。 – kakush

+0

您可以從Qt 5複製它們。它們將正常工作。對於任何一個,它只有三個文件:'qfoo.h','qfoo_p.h'和'qfoo.cpp'。 –