0

我有一堂课叫Sorter. 它有两个公共项目。

  1. int类型变量choice
  2. 使用类型返回值调用的成员函数compare,该int类型返回值接受两个对象作为参数。

Sorter我尝试在将值传递choice给构造函数时创建一个实例,

然后我想使用 C++sort函数对vector. 并传递compare我创建的实例的成员函数。

成员函数使用compare变量choice来决定排序机制。

但我无法获得compare指向Sorter.

有人可以建议我吗?

4

2 回答 2

4

如果您可以更改Sorter类的结构,则可以通过如下定义使其成为函数对象operator ()

bool Sorter::operator ()(const MyObject &o1, const MyObject &o2) {
  // return true if o1 < o2
}

然后你可以将你的Sorter类的一个实例传递给std::sort.

于 2011-01-22T17:46:36.680 回答
0

不幸的是,标准库有点缺乏像这样的组合器。但是,boost::lambda可以完成这项工作:

#include <boost/lambda/bind.hpp>

namespace l = boost::lambda;

struct foo {
    bool bar(char, char);
};


void test(foo *pFoo) {
    char a[2] = {0};

    std::sort(a, a+1,
            l::bind(&foo::bar, pFoo, l::_1, l::_2));
}
于 2011-01-22T17:49:08.063 回答