gpt4 book ai didi

c++ - 交换优先级队列时尝试引用已删除的函数错误

转载 作者:行者123 更新时间:2023-11-27 23:53:22 25 4
gpt4 key购买 nike

我正试图在两个优先级队列之间交换数据并得到了这个错误。我也进行了一些谷歌搜索,但仍然不知道这里出了什么问题。

#include <queue>

class Node
{
public:
int idx;
};
auto greater = []( const Node& a, const Node& b) {return a.idx > b.idx; };
using QUEUE = std::priority_queue<Node, std::vector<Node>, decltype(greater)>;

void foo(QUEUE& a)
{
QUEUE b(greater);
a.swap(b);
}

int main()
{

}

这是完整的错误信息:

Error C2280 ' < lambda_07efac20ebfa61cc8bb35aebd7d81f7c> &<< lambda_07efac20ebfa61cc8bb35aebd7d81f7c>>::operator =(const << lambda_07efac20ebfa61cc8bb35aebd7d81f7c>> &)': attempting to reference a deleted function

最佳答案

Lambda 没有赋值运算符,而 swap() 使用赋值。它将尝试对队列中保存的更大的 lambda 使用赋值。

关于c++ - 交换优先级队列时尝试引用已删除的函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44550093/

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