std :: priority_queue содержит структуру с функтором, которая содержит состояние - PullRequest
0 голосов
/ 06 мая 2020

Существует два отличных ответа на вопросы о std :: priority_queue, содержащих struct / class :

Что, если мне нужны эти структуры сравнения для хранения состояния, например, объект из потока?

Заранее спасибо.

1 Ответ

1 голос
/ 06 мая 2020

Вы можете определить функтор сравнения с конструктором, требующим состояния:

    struct Compare
    {
        State state;

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

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

и передать его экземпляр, созданный с требуемым состоянием, в priority_queue конструктор :

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