Другие языки программирования и технологии

С++. Очередь, добавление просмотр и решение задачи

Помогите пожалуйста написать код для создания очереди с добавлением (в начало, в конец), просмотром (с начала, с конца) и удалением всех отрицательных чисел
Как бы принято сперва реализовать двусвязный список и на его основе реализовать очередь. Например вот так...

#include <iostream>
#include <list>
#include <functional>
#include <random>
#include <iomanip>
using namespace std;
struct Negatory {
bool operator()(const int value)const { return value < 0; }
};
template<typename Type>
class Deque {
public:
void push_back(const Type& value) { box_.push_back(value); }
void push_front(const Type& value) { box_.push_front(value); }
size_t size()const { return box_.size(); }
bool empty()const { return box_.empty(); }
void remove_if(function<bool(Type&)> fn) { box_.remove_if(fn); }
auto begin() { return box_.begin(); }
auto cbegin()const { return box_.begin(); }
auto rbegin() { return box_.rbegin(); }
auto crbegin()const { return box_.crbegin(); }
auto end() { return box_.end(); }
auto cend()const { return box_.end(); }
auto rend() { return box_.rend(); }
auto crend()const { return box_.crend(); }
private:
list<Type> box_;
};
int main() {
uniform_int_distribution<> uid(-10, 10);
mt19937 gen{ random_device()() };
Deque<int> deque;
for (auto i = 0; i < 20; ++i) {
i % 1
? deque.push_front(uid(gen))
: deque.push_back(uid(gen));
}
const auto w = 5U;
for (auto value : deque) cout << setw(w) << value;
cout.put('\n');
Negatory neg;
deque.remove_if(neg);
for (auto value : deque) cout << setw(w) << value;
cout.put('\n');
auto it = deque.crbegin();
for (auto it = deque.crbegin(); it != deque.crend(); ++it) cout << setw(w) << *it;
cout.put('\n');
system("pause > nul");
}
АС
Алексей Стацура
99 119
Лучший ответ
есть же deque? Или у вас задание самостоятельно структуру/класс написать?
Артур Исламов
Артур Исламов
8 952