gpt4 book ai didi

c++ - 将比较器传递给声明为类成员的 priority_queue

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:48 24 4
gpt4 key购买 nike

当我尝试使用 priority_queue 作为类成员时,我卡住了。请查看下面的代码,让我知道为什么 L1 看不到 Type 但 L2 可以看到。我尝试了 struct,也尝试了 ctor。

如果这是事情的工作方式,是否可以将 priority_queue 声明为类成员并稍后从函数内部传递比较器。

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
class comprLess
{
public:
bool operator() (int p1, int p2)
{
return true;
}
};


class Something
{
public:
comprLess cLess;

//L1
priority_queue<int, vector<int>, comprLess> pq(cLess);
//Gives compilation error "syntax error: identifier 'cLess'"

void Method()
{
//L2
priority_queue<int, vector<int>, comprLess> pq2(cLess);
//works fine
}
};

最佳答案

L1 无法看到 cLess,因为它尚未构建;您正处于类定义阶段。当类已经实例化时调用 L2。

您使用了不正确的语法。您需要更改括号。

priority_queue<int, vector<int>, comprLess> pq{cLess};

这会导致在构造时初始化优先级队列。或者,您可以在类构造函数中构造队列。

Something() : pq(cLess) {}

关于c++ - 将比较器传递给声明为类成员的 priority_queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44712218/

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