我正在創建一個創建4個客戶端向量的程序,然後堆使用比較器類對它們進行排序(基本上按帳戶餘額排序)。之後,我只是打印出矢量中每個客戶端的訂購帳號。但是,我認爲我沒有正確實施它。首先,當我調用向量上的STL堆排序時,我明白我將比較器作爲第三個參數傳遞。我的印象是我需要用我的AccountOrder比較類的對象來調用它,但這給了我大量的錯誤。如果我把它稱作類而不是該類的一個實例,它不會給我幾乎那麼多的錯誤。什麼是正確的方法來做到這一點?客戶端堆排序矢量,錯誤地傳遞迭代器?
class AccountOrder
{
public:
bool operator()(Client * a, Client * b)
{
return a->getAccountBalance() > b->getAccountBalance();
};
};
比較已經在我的代碼中實現正上方的main()函數:
int main()
{
AccountOrder f;
vector<Client> list;
Client client1(345.88, "Charlie");
Client client2(249.12, "Rashesh");
Client client3(442.90, "Michael");
Client client4(543.74, "Mary");
list.push_back(client1);
list.push_back(client2);
list.push_back(client3);
list.push_back(client4);
make_heap(list.begin(), list.end(), f);
sort_heap(list.begin(), list.end(), f);
for(int i = 0; i < list.size(); i++)
cout << list[i].getAccountBalance();
system("pause");
return 0;
}
比較級。其次,我真的需要將比較器傳遞給哪個函數? (在這裏我已經把它傳遞給了兩者,我還不確定)。
@M M.完美,固定它。感謝您的幫助! – user2302335 2013-05-05 23:09:18