日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

向算法传递函数:谓词

發布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 向算法传递函数:谓词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我覺的是一種重載,利用函數重載算法中的運算符。

很多算法都會比較輸入序列中的元素。默認情況下,這類算法使用元素類型的<或==運算符完成比較。標準庫還為這些算法定義了額外的版本,允許我們提供自己定義的操作來代替默認運算符。

例如,sort算法默認使用元素類型的<運算符。但可能我們希望的排序順序與<所定義的順序不同,或是我們的序列可能保存的是未定義<運算符的元素類型(如Sales_data).在這兩種情況下,都需要重載sort的默認行為。

1 向算法傳遞函數
作為一個例子,假定希望在調用elimDups后打印vector的內容。此外還假定希望單詞按其長度排序,大小相同的再按字典序排列。為了按長度排序vector,我們將使用sort的第二個版本,此版本是重載過的,它接受三個參數,此參數是一個謂詞。

謂詞

謂詞是一個可調用的表達式,其返回結果是一個能用作條件的值。標準庫算法所使用的謂詞分為兩類:一元謂詞(意味著它們只接受單一參數)和二元謂詞(意味著它們接受兩個參數)。接受謂詞參數的算法對輸入序列中的元素調用謂詞。因此,元素類型必須能轉換為謂詞的參數類型。

接受一個二元謂詞參數的sort版本用這個謂詞代替<來比較元素。

//比較函數,用來比較長度排序單詞

bool isShorter(const string &s1,const string &s2)

{

return s1.size()<s2.size();

}

//按長度由短至長排序words

sort(words.begin(),words.end(),isShorter);

總結

以上是生活随笔為你收集整理的向算法传递函数:谓词的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。