在向量上使用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