簡體   English   中英

使用deque在C ++中實現循環緩沖區

[英]Implementing Circular Buffer in C++ using deque

我正在嘗試為賦值實現循環緩沖區。 為了節省時間,我想在我的重新排序緩沖類中使用deque。 這是我第一次嘗試編寫一個包含雙端隊列的類。

#ifndef ROB_H_
#define ROB_H_

#include <deque>
#include <cstdio>

using namespace std;

class ReorderBuffer{
    public:
        ReorderBuffer (int size);
        void doStuff();

        std::deque<int> buffer;
};    

ReorderBuffer::ReorderBuffer (int size){
    std::deque<int> buffer(size);
}

void ReorderBuffer::doStuff(){

    std::deque<int> buffer(4);

    buffer.push_back(5);
    buffer.push_front(2);
    buffer.push_back(3);
    buffer.push_back(4);
    printf("%d %d\n",buffer.at(0),buffer.pop_front());

}


#endif

在main中,我創建一個大小為4的重新排序緩沖區並調用doStuff()。 當我嘗試編譯時,它表示無效使用void表達式。 我把錯誤縮小到我對buffer.pop_front()的調用。 為什么抱怨,什么是在課堂上放置雙性人的最好方法? 謝謝!

std::deque::pop_front返回void 您無法使用此功能的結果打印此內容。 使用at()獲取值,然后使用pop_frontpop_back根據需要簡單地刪除前面或后面元素,但請注意它們不返回任何內容。

http://en.cppreference.com/w/cpp/container/deque/pop_front

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM