4.3.5 访问向量元素的成员函数
接下来,程序显示主人公物品栏中第一个物品名称所含字符的数目。
- cout << "\nThe item name '" << *myIterator << "' has ";
- cout << (*myIterator).size() << " letters in it.\n";
代码(*myIterator).size()的意思是:"调用myIterator解引用后所得对象的成员函数size()。"因为myIterator引用的string对象等于"battle axe",所以代码返回值10。
提示
无论何时要通过对迭代器解引用来访问数据成员或成员函数,请用一对圆括号将解引用后的迭代器括起来,这样可以确保点运算符应用到迭代器引用的对象。
代码(*myIterator).size()不是最优雅的写法,因此C++(www.cppentry.com)提供了一种可选的、更直观的方式完成相同的任务,如下面两行代码所示。
- cout << "\nThe item name '" << *myIterator << "' has ";
- cout << myIterator->size() << " letters in it.\n";
与本小节第一次出现的两行代码相比,上面两行代码完成了相同的任务。它们都显示了"battle axe"中字符的数目。然而,请注意,此处用myIterator->size()替换了(*myIterator).size()。我们发现替换后的代码更具可读性。对于计算机来说,两个代码块的意思完全一样,但是新版本让人易于使用。一般而言,可以使用->运算符访问迭代器引用对象的成员函数或数据成员。
提示
语法糖是一种更好的、可选的语法,它用易于理解的语法来代替晦涩的语法。例如,不将代码写作(*myIterator).size(),而是使用->运算符提供的语法糖,将代码写作myIterator->size()。