我是C++的初學者,我不知道也找不到解決我的問題的方法。C++ std ::排序自定義比較函數引用到另一個列表
我想以一種不尋常的方式對我的向量進行排序,但未能這樣做。
pointsToVisit - 可以有其開始時間和結束時間的Point對象列表。
visitedPoints - 從pointsToVisit矢量Point對象的索引列表
我想通過各點
的值,我visitedPoints矢量排序BeeHive
std::vector<Point> pointsToVisit;
std::vector<Route> routes;
Route
std::vector<int> visitedPoints;
我學嘗試低於:
bool BeeHive::isPointsVisitStartPrior (int i, int j) { return (pointsToVisit.at(i).startTime<pointsToVisit.at(j).startTime); }
Route BeeHive::sortRouteByStartTime(int routeIndex){
Route route2 = Route();
route2.setStartTime(routes.at(routeIndex).getStartTime());
route2.setVisitedPoints(routes.at(routeIndex).getVisitedPoints());
std::sort(route2.getVisitedPoints().begin()+1, route2.getVisitedPoints().end(), isPointsVisitStartPrior);
evaluateRoute(route2);
return route2;
}
我得到這樣的錯誤:
Error 5 error C3867: 'BeeHive::isPointsVisitStartPrior': function call missing argument list; use '&BeeHive::isPointsVisitStartPrior' to create a pointer to member c:\vrp projekt\vrp\vrp\beehive.cpp 193 1 VRP
Error 6 error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided c:\vrp projekt\vrp\vrp\beehive.cpp 193 1 VRP
例由我試圖做我的工作就是這個地址在:http://www.cplusplus.com/reference/algorithm/sort/
我會心存感激收到任何幫助。
可能有可能,爲我自己的目的創建冒泡排序將體面地代替std :: sort()嗎?
我該如何訪問Point?那麼「pointsToVisit」是未定義的。 – Stranko 2014-11-23 14:39:00
查看我的更新回答 – Jasper 2014-11-23 14:51:36
我沒有設法讓比較器工作,但我有一個其他性質的問題。該矢量是否使用冒泡排序算法進行排序?如果是這樣的話,我自己寫分類方法會更快。 – Stranko 2014-11-23 17:14:19