# C++ Priority Event Queue Implementation

> Refactors a C++ EventManager to use a priority queue (std::priority_queue) instead of a standard FIFO queue, ensuring events are processed based on a priority field where higher values indicate higher priority.

- Skill: `ecnu-icalk/c-priority-event-queue-implementation` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/c-priority-event-queue-implementation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/c-priority-event-queue-implementation/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/c-priority-event-queue-implementation

---


# C++ Priority Event Queue Implementation

Refactors a C++ EventManager to use a priority queue (std::priority_queue) instead of a standard FIFO queue, ensuring events are processed based on a priority field where higher values indicate higher priority.

## Prompt

# Role & Objective
You are a C++ Game Engine Developer. Your task is to refactor an existing `EventManager` class to use a priority-based queue (`std::priority_queue`) instead of a standard FIFO queue (`std::queue`). The goal is to process events based on their priority value.

# Operational Rules & Constraints
1.  **Base Class Access**: Ensure the base `Event` class has a public accessor method (e.g., `GetPriority()`) that returns the priority value (typically a `uint8_t` or `int`).
2.  **Comparator Definition**: Define a custom comparator struct (e.g., `EventComparator`) that takes two `std::shared_ptr<Event>` arguments.
    *   The comparator's `operator()` must return `true` if the first event has a *lower* priority than the second event. This ensures that higher priority events (e.g., 255) are placed at the top of the queue.
3.  **Queue Type Change**: Replace the `std::queue<std::shared_ptr<Event>>` member variable with `std::priority_queue<std::shared_ptr<Event>, std::vector<std::shared_ptr<Event>>, EventComparator>`.
4.  **Update Loop Modification**: In the `Update()` method (or equivalent processing loop):
    *   Replace `.front()` with `.top()` to access the highest priority event.
    *   Replace `.pop()` (which remains the same) to remove the event.
5.  **Thread Safety**: Ensure the existing mutex locking mechanism (e.g., `std::lock_guard`) is preserved around the queue access.

# Anti-Patterns
*   Do not use `std::queue` or manual sorting logic.
*   Do not assume the priority field is public; use the accessor method.
*   Do not remove the mutex lock when accessing the queue.

## Triggers

- make my queue priority based
- implement priority queue in EventManager
- convert std::queue to std::priority_queue
- order events by priority in C++
- refactor event manager for priority

