Я собираюсь определить очереди, которые должны иметь максимум 10 клиентов:
deque<Cart> BOX_1(MAX_CLIENT);
Чтобы уточнить, это создает деку, которая содержит 10 тележек изначально .
Как установить максимальный размер для моего контейнера Deque с C ++?
std::deque
не поддерживает такую функцию.Невозможно установить максимальный размер для него.Не существует стандартного контейнера, поддерживающего такую функцию (за исключением технически std::array
, который имеет фиксированный размер).
Вы можете самостоятельно написать собственный контейнер, который поддерживает такую функцию.Вы можете использовать стандартный контейнер в реализации своего пользовательского контейнера, если вы того пожелаете.Минимальный пример, который ни в коем случае не завершен и не полирован:
struct MaxContainer {
void push_front(Cart c) {
if (internal_container.size() < max_size)
internal_container.push_front(std::move(c));
else
; // do something else
}
private:
int max_size;
std::deque<Cart> internal_container;
}
Вы можете даже создать адаптер контейнера, который может адаптировать любой контейнер (с ограничениями) и добавить к нему максимальный размер, просто храмовываятип внутреннего контейнера.
Тем не менее, вам не обязательно иметь контейнер, который обеспечивает ограничение размера.Вместо этого вы можете просто воздержаться от добавления дополнительных элементов в контейнер в коде, который его использует.