我对在头文件中定义priority_queue
指针并在源文件中对其进行初始化有疑问。
头文件
std::priority_queue<std::shared_ptr<Process>, std::vector<std::shared_ptr<Process>>, ?> *readyQueue;
源文件
auto readyQueueComparator = [](const std::shared_ptr<Process> &first, const std::shared_ptr<Process> &second) {
return true;
};
readyQueue = new std::priority_queue<std::shared_ptr<Process>, std::vector<std::shared_ptr<Process>>, decltype(readyQueueComparator)>;
基本上,我想实现这样的结构,但是我不知道如何在头文件中以这种格式定义优先级队列。
谢谢。
答案 0 :(得分:3)
最简单的答案是不要为此使用lambda。而是定义一个自定义可调用类型。例如:
struct OrderByProcessPriority
{
bool operator()(
std::shared_ptr<Process> const& first,
std::shared_ptr<Process> const& second) const;
}
using ProcessQueue = std::priority_queue<
std::shared_ptr<Process>,
std::vector<std::shared_ptr<Process>>,
OrderByProcessPriority>;
ProcessQueue *readyQueue;
然后,在您的cpp文件中,创建如下实例:
readyQueue = new ProcessQueue{};