练习4.20

Posted dark-king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练习4.20相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

Python 输入输出练习,运算练习,turtle初步练习

Python输入输出练习,运算练习,turtle初步练习

Python输入输出练习,运算练习,turtle初步练习

Python输入输出练习,运算练习,turtle初步练习

练习_使用Lambda表达式无参数无返回值的练习练习_使用Lambda表达式有参数有返回值的练习

Python输入输出练习,运算练习,turtle初步练习