使用STL的sort算法对vector排序时,我想传入自己的比较函数,并且该函数还需要一个参数。
例如,理想情况下,我希望能够进行本地函数声明,如下:
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);
}
编译器仍然报错:"error: use of parameter from containing function"。我该怎么做?我应该创建一些带有全局比较函数的全局变量吗..?谢谢。
operator()
的类/结构体。 - Eugen Constantin Dincastd::map
可以做同样的事情吗?如果可以,将结构体实例传递给映射的语法应该是什么? - tjespe