Другие языки программирования и технологии
С++. Очередь, добавление просмотр и решение задачи
Помогите пожалуйста написать код для создания очереди с добавлением (в начало, в конец), просмотром (с начала, с конца) и удалением всех отрицательных чисел
Как бы принято сперва реализовать двусвязный список и на его основе реализовать очередь. Например вот так...
#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");
}
#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");
}
есть же deque? Или у вас задание самостоятельно структуру/класс написать?
Тарас Бездомный
структуру
Похожие вопросы
- Недавно начал изучать программирование (не с полного нуля), но мои решения задач слишком громоздкое, это нормально?
- Нужна помощь в решении задачи по С++ связанная с матрицами
- Информатика. Помощь в решении задач по массивам
- Решение задач по паскалю
- Помощь в решение задачи на PROLOG
- Решение задач по программированию в VBA...помогите....Пожалуйста
- Помогите пожалуйста найти ошибку в решении задачи по информатике(паскаль) !!!Прошу очень нужно!!!задача простая!!!
- Помогите, пожалуйста, с решением задачи из задачника Абрамяна.
- Помогите с решение задачи по информатике!!!
- Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач: