我已经定义了一个minheap如下
typedef priority_queue<megePartitions_t,vector<megePartitions_t>,compareMergePartition> mergePartitionFilesQ_t;
比较器定义如下
struct compareMergePartition
{
bool operator()(const megePartitions_t &lhs,const megePartitions_t &rhs)
{
return *(lhs._pair) > *(rhs._pair);
}
};
我正在使用定义的minheap如下
mergePartitionFilesQ_t mergeQ
现在,我想根据一个标志在 minheap 和 maxheap 之间切换,我应该更改比较器的构造函数以接收标志并使用它在大于或小于比较之间切换还是有更好的方法。感谢您的帮助。
答:我觉得不需要函子,所以我切换到函数指针,并根据标志选择合适的函数。
if(m_builtAcending)
comparator = compareMergePartitionAsc;
else
comparator = compareMergePartitionDes;
mergePartitionFilesQ_t mergeQ(comparator);
谢谢你的帮助