Скажем, у меня есть очередь объектов "события", где каждый объект имеет "тип события" и какое-то поле данных.В C ++ это может выглядеть следующим образом:
enum class EventType
{
A,
B,
C
};
struct Event
{
EventType type;
std::string message;
};
Скажем, я хотел очередь этих событий, и я хочу, чтобы очередь имела следующие свойства:
- Когда событиепомещается в очередь, все существующие события того же
EventType
удаляются.Поэтому, когда событие извлекается из очереди, оно всегда является самым недавно добавленным экземпляром его EventType
- События различных
EventType
извлекаются вчтобы их толкнули.(pop()
не будет ожидать никаких аргументов).
Следовательно, очередь FIFO относительно Event
и LIFO
относительно EventType
.
Пример:
Следующие события помещаются в очередь (буква - тип события, номер - номер экземпляра)
A1 A2 C1 C2 C3 B1 B2 A3
Если pop () вызывается 3 раза, элементы, возвращаемые по порядку, будут
C3 B2 A3
Существует ли название для этого типа структуры данных и есть ли примеры реализации?