簡體   English   中英

std的排序功能:使用&參數C ++進行排序

[英]Sort function for std:sort with & parametr c++

我想將對實例的引用用作排序函數的參數。

我有vector<CMail> log ,在類CMail有需要比較的功能。

和想要排序log所以我有:

bool sortFunction(CMail a, CMail b){
  return (a.CompareByTimeStamp(b) < 0) ? true : false;
}

接着

sort(log.begin(), log.end(), sortFunction);

工作正常。 但是我可以像這樣將功能參數作為參考嗎?

bool sortFunction(CMail &a, CMail &b){
...
}

當我這樣做時,我的代碼沒有編譯。

我怎樣才能做到這一點?

簡而言之: const 你需要:

bool sortFunction(const CMail& a, const CMail& b){
  return (a.CompareByTimeStamp(b) < 0);
}

這也意味着您對CompareByTimeStamp的簽名必須為:

int CompareByTimeStamp(const Cmail& other) const; // (inside class Cmail {...};)
//                      ^ b is const         ^ a is const

這里 這是因為比較兩個對象不應更改它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM