C++ 在C+中实现循环缓冲区+;使用deque

C++ 在C+中实现循环缓冲区+;使用deque,c++,circular-buffer,C++,Circular Buffer,我正在尝试为分配实现一个循环缓冲区。为了节省时间,我想在我的reorder缓冲类中使用deque。这是我第一次尝试编写一个包含deque的类 #ifndef ROB_H_ #define ROB_H_ #include <deque> #include <cstdio> using namespace std; class ReorderBuffer{ public: ReorderBuffer (int size); voi

我正在尝试为分配实现一个循环缓冲区。为了节省时间,我想在我的reorder缓冲类中使用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
\ifndef ROB\u H_
#定义ROB_H_
#包括
#包括
使用名称空间std;
类重新排序缓冲区{
公众:
ReorderBuffer(int-size);
void doStuff();
std::deque缓冲区;
};    
ReorderBuffer::ReorderBuffer(整数大小){
std::deque缓冲区(大小);
}
void ReorderBuffer::doStuff(){
标准::德克缓冲区(4);
缓冲器。推回(5);
缓冲器。向前推(2);
缓冲器。推回(3);
缓冲器。推回(4);
printf(“%d%d\n”,buffer.at(0),buffer.pop_front());
}
#恩迪夫

大体上,我创建了一个大小为4的重新排序缓冲区,并调用doStuff()。当我试图编译时,它说void表达式的使用无效。我已将错误范围缩小到对buffer.pop_front()的调用。为什么它会抱怨,在我的课堂上用什么方法最好?谢谢

std::deque::pop_front
返回
void
。您不能使用此函数的结果打印此文件。使用
at()
获取值,然后使用
pop_-front
pop_-back
根据需要简单地删除前面或后面的元素,但请注意它们不会返回任何内容


谢谢!这正是我需要知道的。我应该早点看。