C++ 使用头文件中的lambda定义优先级_队列
我有一个关于在头文件中定义C++ 使用头文件中的lambda定义优先级_队列,c++,C++,我有一个关于在头文件中定义priority\u队列指针并在源文件中初始化它的问题 头文件 std::priority_queue<std::shared_ptr<Process>, std::vector<std::shared_ptr<Process>>, ?> *readyQueue; auto readyQueueComparator = [](const std::shared_ptr<Process> &first,
priority\u队列
指针并在源文件中初始化它的问题
头文件
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)>;
std::优先级队列*readyQueue;
源文件
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)>;
auto-readyQueueComparator=[](常数std::shared\u ptr&first,常数std::shared\u ptr&second){
返回true;
};
readyQueue=新std::priority\u队列;
基本上,我想实现这样一种结构,但我不知道如何在这种格式的头文件中定义优先级队列
谢谢。简单的回答是,不要使用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;
我不会在这里用lambda。我会写一个函子。如果可以的话,我也会避免使用全局变量。这在lambda中是不可能的,因为它的类型是未知的。另一方面,我不确定是否有理由在程序中使用指向priority_队列的指针。@SergeyA假设我不会使用指向priority_队列的指针,但我仍然希望它作为类中的成员变量。(我没有把整个代码都放进去,但ready_queue实际上是一个成员变量。)在这种情况下,我应该如何在头文件中定义优先级_queue?@MertAkozcan pointer note是一个旁注。实际的答案是,在定义lambda之前,不能使用lambda的类型。您可以使用答案中所示的函子。