我如何配置 std::priority_queue
以忽略重复项?
当我添加一个已经存在的键时,应该忽略这个新键。(在我的情况下,旧键和新键的优先级总是完全相同的。)
就复杂度而言,这不会有任何影响:它将尝试在适当的位置插入,找到已存在的键并什么都不做。问题只是是否可以通过配置来实现这一点,std::priority_queue
是否支持这种方式。
我如何配置 std::priority_queue
以忽略重复项?
当我添加一个已经存在的键时,应该忽略这个新键。(在我的情况下,旧键和新键的优先级总是完全相同的。)
就复杂度而言,这不会有任何影响:它将尝试在适当的位置插入,找到已存在的键并什么都不做。问题只是是否可以通过配置来实现这一点,std::priority_queue
是否支持这种方式。
priority_queue<int> pq = /* values */;
int curr = 0;
int prev = 0;
bool first = true;
while(isplit < target) {
prev = curr;
curr = pq.top();
pq.pop();
if (!first && prev == curr) {
continue;
}
first = false;
// do something with curr
}