C++ 按采用c+;中参数的函数排序+;?

C++ 按采用c+;中参数的函数排序+;?,c++,sorting,C++,Sorting,我正在尝试编写一个函数,通过各种不同的属性对自定义类对象的向量进行排序 C++排序参考,在这里找到: 表示可以按如下方式进行排序: std::sort (myvector.begin(), myvector.end(), myfunction); std::sort (myvector.begin(), myvector.end(), myfunction(mode=7)); 除了向量中的两个对象外,我希望能够将一个参数传递给myfunction,如下所示: std::sort (myv

我正在尝试编写一个函数,通过各种不同的属性对自定义类对象的向量进行排序

C++排序参考,在这里找到:

表示可以按如下方式进行排序:

std::sort (myvector.begin(), myvector.end(), myfunction);
std::sort (myvector.begin(), myvector.end(), myfunction(mode=7));
除了向量中的两个对象外,我希望能够将一个参数传递给myfunction,如下所示:

std::sort (myvector.begin(), myvector.end(), myfunction);
std::sort (myvector.begin(), myvector.end(), myfunction(mode=7));
你知道这样做的方法吗

我是比较新的C++,来自Python,在这里这将是容易的。< /P> < P>创建函子:< /P>

struct MyFunction {
  bool operator()(const T& lhs, const T& rhs) const { /* implement logic here */ }
  int mode;
};
然后传递该函数的实例,而不是普通函数
myfunction
。这里,
T
是用于实例化
std::vector
的类型

MyFunction f;
f.mode = 7;
std::sort (myvector.begin(), myvector.end(), f);
如果您支持C++11,则可以使用lambda函数:

std::sort(myvector.begin(), myvector.end(), [](const T&a, const T& b) { /* implement*/ });
struct Functor{
  int mode;
  bool operator() (int a,int b) { return (a<b);}
} functor;

可以使用函子代替自由函数:

std::sort(myvector.begin(), myvector.end(), [](const T&a, const T& b) { /* implement*/ });
struct Functor{
  int mode;
  bool operator() (int a,int b) { return (a<b);}
} functor;

如果您使用的是C++11,则可以使用lambda:

sort(myvec.begin(), myvec.end(), [] (Type a, Type b) { return myfunction(a,b,7); });

您如何使用
模式
?更正,在这里可以找到:
模式=7
是什么意思?您将如何在中实现这一点?如果您不使用C++11,
boost::bind
基本上与
std::bind
兼容。酷!我不知道函子。它们似乎很有用。