編寫泛型程式

今天在看到中文版C++ Primer 4/4的16.1.6這一小節時,有這樣一段敘述:『有些讀者可能會認為大小比較動作如果以<和>運算子執行,會更自然些:

//預期的比較動作
if(v1 < v2) return -1;
if(v1 > v2) return 1;
return 0;

然而若寫成這樣:

//預期的比較動作
if(v1 < v2) return -1;
if(v1 > v2) return 1;
return 0;

就是減少「對引數型別的需求量」。在這兒,引數型別必須支援<但不必同時支援>。』

等一下,這兩段程式碼為何一模一樣?作者到底要表達什麼?我只好翻看英文版的說明:『Some readers might think it would be more natural for the comparisons to be done using both the < and > operators:

     // expected comparison
     if (v1 < v2) return -1;
     if (v1 > v2) return 1;
     return 0;

However, by writing the code as

     // expected comparison
     if (v1 < v2) return -1;
     if (v2 < v1) return 1; // equivalent to v1 > v2
     return 0;

we reduce the requirements on types that can be used with our compare function. Those types must support <, but they need not also support >.』

看出錯誤來了,原來是v2 < v1喔,哈哈!發現書中有bug,超有成就感的!

Print Friendly, PDF & Email

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料