struct mycompare和static bool mycompare之间的区别是什么?

时间:2014-11-25 22:14:24

标签: c++

struct mycompare1 {
    bool operator() (const Interval a, const Interval b) {
        return a.start < b.start;
    }
} mycompare1_instance;

static bool mycompare2(const Interval a, const Interval b) {
    return a.start < b.start;
}

Q1:这两者有什么区别。似乎mycompare1_instance以某种方式等于mycompare2就像这样。以下两行似乎也做同样的事情。

sort(intervals.begin(), intervals.end(), mycompare1);
sort(intervals.begin(), intervals.end(), mycompare2);

有人可以解释一下吗?

Q2:&#34;静态&#34;这里有用吗?

提前!

2 个答案:

答案 0 :(得分:1)

第一种情况定义了operator(),因此您可以将它用作函数 - 简而言之,它们是仿函数。优点是它可以具有状态,并且取决于您如何定义operator(),您可以将该类的实例用作函数。第二种情况只是一个静态函数,并不保持类/结构意义上的状态。

答案 1 :(得分:0)

我怀疑这个问题与仿函数有关

即你见过

mycompare_instance1(x,y)

VS

mycompare2(x,y)

第一个是仿函数。它用于我们需要创建既具有状态的对象又可以像函数一样调用的东西。第二个是一个简单的函数