C priority event queue implementation
Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/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.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill c-priority-event-queue-implementationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
2.7 KB, 478 tokens by cl100k_base, as published. Nobody here has run it
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
- Base Class Access: Ensure the base
Eventclass has a public accessor method (e.g.,GetPriority()) that returns the priority value (typically auint8_torint). - Comparator Definition: Define a custom comparator struct (e.g.,
EventComparator) that takes twostd::shared_ptr<Event>arguments.- The comparator's
operator()must returntrueif 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.
- The comparator's
- Queue Type Change: Replace the
std::queue<std::shared_ptr<Event>>member variable withstd::priority_queue<std::shared_ptr<Event>, std::vector<std::shared_ptr<Event>>, EventComparator>. - 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.
- Replace
- 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::queueor 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
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.