标准迭代器中的半开范围间隔:基本原理
标准库将范围的结束迭代器定义为超过序列中的最后一个元素,而不是精确指向最后一个元素。这种设计选择提出了为什么采用这一约定的问题。
Dijkstra 的关键论点
根据对标准有重大影响的 Edsger W. Dijkstra 的说法, [开始,结束)有两个主要原因间隔:
复杂迭代的优点
在处理对基于范围的构造的嵌套或迭代调用时,半开范围具有优势。相比之下,使用双闭范围会导致差一错误和更复杂的代码。
从零开始计数的理由
该标准也赞成在这些范围内从零开始计数。使用 [begin, end) 约定,N 个元素的范围自然会转换为 [0, N),从而无需进行调整。
结论
[标准迭代器中的 begin, end) 约定是深思熟虑的设计考虑的结果,它增强了基于范围的算法的简单性、可读性和效率。通过避免使用包含性结束迭代器,标准库简化了序列的操作,特别是在涉及多个嵌套范围的复杂场景中。
以上是为什么标准迭代器使用半开范围([begin, end))?的详细内容。更多信息请关注PHP中文网其他相关文章!