【发布时间】:2020-04-20 03:07:13
【问题描述】:
迭代器是否将 begin() 和 end() 定义为成员函数?我认为容器已经定义了 begin() 和 end(),而迭代器的可用操作数量有限,例如比较、递增和取消引用。在下面的代码示例中,他似乎在迭代器上使用了 begin() 和 end(),我不确定这将如何工作。这是一个错误,还是我错过了什么?
下图来自 Bjarne Stroustrup 的《编程:原理与实践》,第 20 章的第 737 和 738 页。唯一重要的部分是 Text_iterator 类中 ln 和 pos 的定义,以及 (*ln) 的用法。结尾()。我用 2 标记了 (*ln).end()。对于上下文,他正在为类 Document 定义一个迭代器,这是一个文本文件的内存表示。
谢谢。
一个相关的问题,有人知道如何联系 Bjarne 吗?我想问他这个问题,但我不知道他的电子邮件。从他的常见问题解答中,他似乎欢迎电子邮件,但没有在任何地方说。
【问题讨论】:
-
注意
(*ln).end()中的*。他没有在迭代器中使用begin,而是在取消引用迭代器并在Line中使用begin方法@ 987654328@ 引用.我会把它写成ln->end(),但 Stroustrup 博士可能有理由在这里使用更笨重的语法。