initialization for STL priority queue

前端 未结 2 1409
时光说笑
时光说笑 2021-02-10 00:57

I\'m still confused about priority queue in STL. Here is the objective I wanna achieve, say: I have a structure called Record, which contains a string word and a int counter. Fo

2条回答
  •  故里飘歌
    2021-02-10 01:34

    Your code does work, with two small changes:

    • Uncomment the definition of Record::operator<(), since that's needed by the priority queue's default comparator.
    • Change the declaration to bool operator<(const Record &) const (note the extra const), since the priority queue has to compare using references to const objects.

    Alternatively, declare it as a free function, outside the class definition:

    bool operator<(const Record &l, const Record &r) {return l.count > r.count;}
    

    or define your own functor, and provide that as the appropriate template argument:

    struct CompareRecords
    {
        bool operator()(const Record &l, const Record &r) {return l.count > r.count;}
    };
    
    typedef priority_queue, CompareRecords> RecordQueue;
    

提交回复
热议问题