gpt4 book ai didi

c++ - 如何使用将 const int 作为 int* 优先级队列的比较器的运算符

转载 作者:行者123 更新时间:2023-11-28 04:19:49 25 4
gpt4 key购买 nike

我必须使用我的运算符作为两个指针输入的比较器,但我坚持将这些实际输入插入队列,因为我的比较器将 const int 作为输入,而 arrange 将 int*.

void arrange(int* a, int* b) {
std::priority_queue<int*, std::vector<int>, compr> q;
q.push(a);
q.push(b);
}

struct compr {
bool operator()(const int& lhs, const int& rhs) const {
if (lhs%2==0 && rhs%2==0) {
return lhs>rhs;
}
return false;
}
};

最佳答案

如果容器包含指针,则必须始终使用指针。

在代码中用注释标记和解释更改。

struct compr
{
bool operator()(int*& lhs, int*& rhs) const
// ^ ^
// comparing pointers to ints, not ints
// also removed cost from the parameters. I'm not sure why, but they
// can't be const. Probably an interesting reason behind that, but I
// don't know it
{
if (*lhs % 2 == 0 && *rhs % 2 == 0)
// ^ ^
// added dereferences because pointers
{
return *lhs > *rhs;
// ^ ^
// added dereferences
}
return false;
}
};

void arrange(int* a, int* b)
{
std::priority_queue<int*, std::vector<int*>, compr> q;
// ^
// if the priority queue contains pointers to int, the underlying
// container needs to be pointer to int.
q.push(a);
q.push(b);
}

关于c++ - 如何使用将 const int 作为 int* 优先级队列的比较器的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55717106/

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