我想排序指針數組,但是VS不會編譯,說C++指針比較器不編譯
「的TestClass :: compareItems」:非標準語法;使用 「&」創建一個指針構件
該比較器是這樣的:
bool testClass::compareItems(ElementType *a, ElementType *b)
{
return elementToProfit[a]/a->w() > elementToProfit[b]/b->w();
}
而陣列僅僅是一個正常的陣列。
for (auto &knapsack : knapsacks)
{
std::sort(knapsack.second.begin(), knapsack.second.end(), compareItems);
}
我不太清楚發生了什麼事。 VS還抱怨說
'無效的std ::排序(_RanIt,_RanIt)':預計2個論點 - 3提供
我以爲是因爲有與比較器的問題嗎?這應該是超級簡單的...任何幫助非常感謝,謝謝!
什麼是'elementToProfit'?對於你的最後一點,我不確定,但我認爲比較器需要是一個免費函數,而不是某些類的成員函數 – user463035818
...以及爲什麼使用循環對數組進行排序?它應該足夠排序一次(而不是每個元素一次) – user463035818
我想排序許多數組,這只是一個循環在不同的數組。我看到問題出在哪裏,這很有道理。 「elementToProfit」是我想排序的元素之外的額外信息,但我需要排序。我猜這意味着我需要「手工」對它們進行排序,不是嗎,因爲我無法交出額外的信息? –