swift - 安全处理超出范围异常的性能?
问题描述
我有一个扩展,Collection
允许安全访问元素而无需每次都检查。这是我的扩展的样子:
extension Collection {
subscript(safe index: Index) -> Element? {
indices.contains(index) ? self[index] : nil
}
}
的时间复杂度indices.contains(index)
是O(n)
一个艰难的权衡。有没有办法做到这一点O(1)
?
解决方案
这是 O(1) 任何时候.contains
都是 O(1)。例如, Array.Indices 是一个 Range,并且Range.contains
是 O(1)。原则上,这不能比contains
. 但是您可以做的是创建一个协议 SafeCollection,使其成为默认实现,然后为需要它的集合提供自定义实现。
推荐阅读
- python - 始终在 Google Cloud 上运行 Python 脚本
- php - 具有适当权限的现有文件路径的 Nginx“没有此类文件或目录错误”
- python - 如何根据 numpy 数据类型确定 PostgreSQL 列数据类型?
- javascript - 如何实现 React 路由?
- postgresql - 如何选择最近的记录,然后根据其值进行查询?
- c# - 让玩家失去生命
- python - django模型多态相关领域
- html - 如何在空格上打断,如果单词对空格来说太大,则只在单词中打断
- node.js - Nodejs 的 mongoose 出现“.post 不是函数”的错误
- python - 如何修复 imdb.load_data() 函数的“allow_pickle=False 时无法加载对象数组”?