在向量上使用STL排序算法时,我想传入我自己的比较函数,该函数也需要一个参数。将参数传递给比较函数?
例如,最好我想做一个本地函数声明,如:
int main() {
vector<int> v(100);
// initialize v with some random values
int paramA = 4;
bool comp(int i, int j) {
// logic uses paramA in some way...
}
sort(v.begin(), v.end(), comp);
}
然而,编译器会抱怨了一番。当我尝试类似:
int main() {
vector<int> v(100);
// initialize v with some random values
int paramA = 4;
struct Local {
static bool Compare(int i, int j) {
// logic uses paramA in some way...
}
};
sort(v.begin(), v.end(), Local::Compare);
}
编译器仍然抱怨:“错误:使用参数从包含函数”
我应该怎么办?我应该使用全局比较函数来创建一些全局变量吗?
谢谢。
第三个参数是什么,可以使用函数调用语法来调用。因此,定义'operator()'的函数和类/结构都会起作用。 – 2010-11-01 04:17:46
@Eugen:好点,我已经更新了我的回答以反映这一点。 – 2010-11-01 04:24:10
谢谢,这是工作(除了编译器抱怨,除非我移动主函数以外的结构声明,我认为我们被允许本地声明类和结构..?) – George41 2010-11-01 04:39:42