小编Phi*_*hil的帖子

速度差异:使用*this在一个大类中分离仿函数VS operator()

我正在使用c ++ STL堆算法,我在它周围写了一个包装类,所以我可以做一些其他的东西.当我尝试使用下面的代码时,例如:

//! Min-heap wrapper class.
class FMMHeap{
public:
    FMMHeap(Vector &phi) : _phi(phi) {}
    bool operator()(unsigned p1, unsigned p2) {return fabs(_phi(p1)) > fabs(_phi(p2)); }
    inline void pop(){ pop_heap(_heap.begin(),_heap.end(),*this); _heap.pop_back(); }
    [...lots of other stuff...]
    vectorU32 _heap;
    Vector &_phi;
}
Run Code Online (Sandbox Code Playgroud)

它比我有一个像这样的单独的函数对象慢得多:

struct HeapSort{
public:
    HeapSort(Vector &phi) : _phi(phi) {}
    bool operator()(unsigned p1, unsigned p2) {return fabs(_phi(p1)) > fabs(_phi(p2)); }
private:
    Vector &_phi;
};

class FMMHeap{
public:
    FMMHeap(Vector &phi) : cmp(phi) {}
    inline void pop(){ pop_heap(_heap.begin(),_heap.end(),cmp); _heap.pop_back(); }
    [...lots of other …
Run Code Online (Sandbox Code Playgroud)

c++ performance operators this operator-keyword

1
推荐指数
1
解决办法
377
查看次数

标签 统计

c++ ×1

operator-keyword ×1

operators ×1

performance ×1

this ×1