在大多数语言中,[]通常被期望为 * 快速 *:允许[]访问一个链表的元素在技术上是可行的,但这通常是一个坏主意,因为它会使潜在的性能问题不那么明显。大多数人不会期望someCollection[99]执行100次迭代。 相反,elementAt does not make any such guarantee: 可以按迭代顺序遍历元素,忽略第一个index元素,然后返回下一个。某些可迭代对象可能有更有效的方法来查找元素。 所以任何Iterable总是可以提供elementAt实现,这不一定很快,但是只有能够提供高效实现的派生类才应该提供operator []。对于这样的类,elementAt和[] * 应该 * 是相同的。
1条答案
按热度按时间bvhaajcl1#
在大多数语言中,
[]
通常被期望为 * 快速 *:允许[]
访问一个链表的元素在技术上是可行的,但这通常是一个坏主意,因为它会使潜在的性能问题不那么明显。大多数人不会期望someCollection[99]
执行100次迭代。相反,
elementAt
does not make any such guarantee:可以按迭代顺序遍历元素,忽略第一个
index
元素,然后返回下一个。某些可迭代对象可能有更有效的方法来查找元素。所以任何
Iterable
总是可以提供elementAt
实现,这不一定很快,但是只有能够提供高效实现的派生类才应该提供operator []
。对于这样的类,elementAt
和[]
* 应该 * 是相同的。