Реализация циклического буфера в C ++ с использованием deque

Я пытаюсь реализовать круговой буфер для назначения. Чтобы сэкономить время, я хочу использовать 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

В основном я делаю буфер переупорядочения размером 4 и вызываю doStuff (). Когда я пытаюсь скомпилировать, он говорит недопустимое использование выражения void. Я сузил ошибку до моего вызова buffer.pop_front (). Почему это жалуется, и как лучше всего поставить деку в моем классе? Спасибо!

4

Решение

std::deque::pop_front возвращается void, Вы не можете распечатать это с результатом этой функции. использование at() чтобы получить значения, а затем использовать pop_front или же pop_back просто удалите передний или задний элемент по мере необходимости, но обратите внимание, что они ничего не возвращают.

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

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]