首頁 / CompScience / Programming / Languages / C_and_CPP / 編寫泛型程式

編寫泛型程式

今天在看到中文版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
馬上成為工作達人的Fans

About ㄚ琪

工作達人Fun Taiwan的創辦者及總編,可以在這裡更認識他。

發表迴響

你的電子郵件位址並不會被公開。 Required fields are marked *

*

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

Scroll To Top