c++ stl 中的自定义比较函数
5996
2022.02.21
发布于 未知归属地

hxdm,在c++中使用stl中的sort与priority_queue,自定义比较函数时,
自定义的比较函数为:

static bool comp(int&a,int &b)
    {
        return a<b;
    }

那么priority_queue的写法为

priority_queue<int,vector<int>,decltype(&comp)>my_q(comp);

而sort的写法为

sort(a.begin(),a.end(), comp);

sort不能写为priority_queue这种时为什么啊?
两者的头文件定义分别为:

template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
template <class T, class Container = vector<T>,
  class Compare = less<typename Container::value_type> > class priority_queue;

还有如果在Compare中如果是左参数小于右参数返回真,那么所有的stl是不是都是最小的排在前面?

评论 (11)