oli*_*obk 11
没有预定义的类型,但您可以通过Index为包含两个切片的类型实现特征来轻松创建自己的类型:
use std::ops::Index;
struct Slice<'a, T: 'a>(&'a[T], &'a[T]);
impl<'a, T: 'a> Index<usize> for Slice<'a, T> {
type Output = T;
fn index(&self, index: usize) -> &T {
if index < self.0.len() {
&self.0[index]
} else {
&self.1[index - self.0.len()]
}
}
}
Run Code Online (Sandbox Code Playgroud)
更一般地说,如果
result是k数组切片的串联,则result应该在O(k)中运行任意数组访问.
O(log(k))如果切片连接是O(k),则可以通过创建一个包含切片累积长度的数组并使用二进制搜索来查找要索引的实际切片来获取切片访问权限.
这将需要一个宏,因为我们还没有足够好的常量求值器,也没有值泛型.
| 归档时间: |
|
| 查看次数: |
3487 次 |
| 最近记录: |