如何使用C++构建优先级队列,优先级为大数,然后优先级为小奇数?

Abu*_*ifa 2 c++ computer-science data-structures

如何使用C++构建优先级队列,优先级甚至是大数字,然后是小的奇数?

例如:如果我4 8 3 2 1进入优先级队列,它将成为优先级队列8 4 2 1 3

Gin*_*lus 5

struct greater_even_first{
    bool operator()(int a, int b) const{
        if(a%2==0){
            if(b%2)
                return true;
            else
                return a>b;
        }
        else if(b%2==0)
            return false;
        return b>a;
    }
};

#include<queue>
std::priority_queue<int, std::vector<int>, greater_even_first> name;
Run Code Online (Sandbox Code Playgroud)

greater_even_first 可以成为更普遍的模板.

如果你想知道它的工作原理,请阅读priority_queue文档.

  • 这不是用户正在寻找的东西.偶数首先排序最大,然后奇数需要先排序最小. (2认同)