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
兼容。酷!我不知道函子。它们似乎很有用。