gpt4 book ai didi

c++ - 使用双端队列在 C++ 中实现循环缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:21 28 4
gpt4 key购买 nike

我正在尝试为分配实现一个循环缓冲区。为了节省时间,我想在我的重新排序缓冲区类中使用双端队列。这是我第一次尝试编写一个包含双端队列的类。

#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

主要是,我创建了一个大小为 4 的重新排序缓冲区并调用了 doStuff()。当我尝试编译时,它说无效使用 void 表达式。我已将错误缩小到我对 buffer.pop_front() 的调用。为什么它在提示,在我的类(class)中放置双端队列的最佳方式是什么?谢谢!

最佳答案

std::deque::pop_front 返回 void。您不能使用此功能的结果打印它。使用 at() 获取值,然后使用 pop_frontpop_back 根据需要简单地删除前面或后面的元素,但请注意它们确实如此不返回任何东西。

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

关于c++ - 使用双端队列在 C++ 中实现循环缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19598795/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com