std::priority_queue 包含带有包含状态的函子的结构

std::priority_queue contain struct with functor that contains a state

关于 std::priority_queue 包含 / 的问题有两个很好的答案:

如果我需要那些比较结构来保存状态,例如 ofstream 的对象怎么办?

提前致谢。

您可以使用需要状态的构造函数来定义比较仿函数:

    struct Compare
    {
        State state;

        Compare(State state)
            : state(state)
        {
        }

        bool operator()(const Item& a, const Item& b)
        {
            ... // use state
        }
    };

并将其以所需状态构造的实例传递给priority_queue constructor:

    priority_queue<Item, std::vector<Item>, Compare> queue(Compare(state));