gpt4 book ai didi

c++ - 命令模式队列按时间排序?

转载 作者:行者123 更新时间:2023-11-30 03:02:21 24 4
gpt4 key购买 nike

我正在更改一些代码以使用命令模式并将命令对象存储在队列中。这些命令将需要在特定时间执行,因此我将每秒迭代一次列表以查找要执行的命令。

每个命令对象都会有一个时间,我会检查这个时间与当前时间(在一个小阈值内)。因此,如果时间匹配,我需要从列表中删除命令对象,然后执行它。通常在任何给定时间都会有不到 10 个命令。我应该使用什么集合数据结构以及如何在迭代列表时删除命令对象?

最佳答案

我想你想使用 priority queue .这是一个容器,可让您提取最高优先级的项目。在您的情况下,“更高优先级”是“首先发生”。

C++ 将优先级队列建模为 priority_queue 容器适配器。这意味着它内部还有一些其他容器可以进行实际存储。这个容器通常是 vectordeque . (需要随机访问迭代器。)默认为 vector .所以你可以声明:

std::priority_queue<T, vector<T>, Compare> queue;

哪里T是你的元素和Compare是比较两个 T 的函数元素和返回 true如果第一个优先级低于第二个。如果你有 operator <为您的类型定义T ,它变得更简单:

std::priority_queue<T> queue;
  • 将项目放入队列:queue.push(item);
  • 获取最高优先级的元素:queue.top()
  • 删除队列的顶部项目:queue.pop();

请注意 pop()不返回删除的元素;它只是删除并破坏它。

关于c++ - 命令模式队列按时间排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10219480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com