練習4.20
阿新 • • 發佈:2018-08-08
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