我試圖實現一個RedBlack樹,該樹包含一些2D點。我想要有2棵RedBlack樹,第一棵根據它們的第一個元素(比如x)排序Points,第二個根據第二個元素(比如y)排序它們。我不想爲這個任務分配兩棵樹。所以我決定將一個函數傳遞給一個比較點的紅黑樹的構造函數。例如:將函數賦值給另一個
bool xCompare(Point a, Point b) {return a.x < b.x ;}
bool yCompare(Point a, Point b) {return a.y < b.y ;}
因此我可以這樣寫:
RedBlackTree A(xCompare); RedBlackTree B(yCompare);
的問題是,我不知道我山楂可以通過這個功能保存到構造函數,以便每次我打電話insert
函數時,插入是基於這個傳遞的函數。例如,如果我寫:
A.insert(make_point(2,3));
A.insert(make_point(7,5));
A.insert(make_point(11,1));
在A
的問題應該基於xCompare
進行排序。但我不知道如何在我的課程中保存這個xCompare
函數(如私人函數),以便insert
可以訪問它。