for循環的條件判斷中爲什麼用'!='而不用'

翻閱《C++ Primer中文版(第4版)》,裏面出現的for大多都是類似如下的循環:

  1. vector<int> ivec(10);  
  2. for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix) {  
  3.     ix = 1;  
  4. }  

從以上的代碼中,不由得讓人產生兩個疑問:

1、判斷條件爲什麼用'ix != ivec.size()'而不用'ix < ivec.size()'呢?

在書中的第82頁的解釋爲:C++程序員習慣於優先選用!=而不是<來編寫循環判斷條件。

2、爲什麼調用size成員函數而不提前保存它返回的值?

同樣,在書中的第82頁的解釋爲:這反映了一種良好的編程習慣,在C++中,有些數據類型(如vector)可以動態增長,而在循環中容易地增加新元素,如果確實增加了新元素的話,那麼測試提前保存的size值就會有問題。在C++函數中有些函數可以聲明爲內聯函數。編譯器遇到內聯函數時就會直接擴展相應代碼,而不是進行實際的函數調用。像size這樣的小庫函數幾乎都定義爲內聯函數,故每次循環過程中調用它的運行時代價是比較小的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章