1. 程式人生 > >練習4.20

練習4.20

r++ pty cto ring 遞增 是什麽 優先 含義 如果

4.20:假設iter的類型是vector<string>::iterator,說明下面的表達式是否合法。如果合法,表達式的含義是什麽?如果不合法,錯在何處?

(a) *iter++;  (b) (*iter)++;  (c)*iter.empty();

(d) iter->empty();  (e) ++*iter;  (f) iter++->empty();

Ans:a)合法。由於遞增運算符的優先級高於解引用運算符,所以其含義是:*(iter++);對iter解引用,然後再讓iter加一。

   b)合法。其含義是:先對iter解引用,再將解引用後的值加一。但是由於iter叠代器中的元素是string類型的不能進行遞增操作。

   c)不合法。由於點運算符的優先級高於解引用,所以iter是一個叠代器,其沒有成員empty(),故不能使用點運算符訪問。

   d)合法。通過iter叠代器使用箭頭運算符去訪問vector<string>類型的成員empty()。

   e)不合法。由於iter叠代器中的元素是string類型的不能進行遞增操作。

   f)合法。等價於(*iter++).empty();其含義是先對叠代器解引用得到字符串,判斷是否是空,然後再把叠代器加一向後移動一個位置。

  

練習4.20