我正在使用IndexSet
而我正在尝试访问某些索引,这些索引有时是连续的,有时则不是。
例如,我的集可能包含[1, 2, 3, 5, 6, 7, 13, 31]
我想从3...13
范围中拉出一组范围,但语法有问题。我已经学会了如何使用Apple文档中的函数命令,使用myIndexSet.sorted()
。但是,Apple文档没有提供如何访问集合中的一系列元素的示例。用于访问索引集中元素的Apple文档如下:
subscript(Range<IndexSet.Index>)
我已经尝试了很多方法来写这个,但无法弄清楚如何正确地做到这一点。有人可以告诉我如何访问集合中的一系列元素来创建新集合吗?我尝试过这样的事情:
let subset = subscript(Range: myLargerSet.3...13)
但它似乎不起作用。
由于
答案 0 :(得分:1)
您正在寻找的是<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Inspect and check my class</div>
IndexSet
intersection与另一[1, 2, 3, 5, 6, 7, 13, 31]
IndexSet
的{{3}}:
[3, 4, ..., 12, 13]
答案 1 :(得分:0)
一种可能的解决方案是使用过滤器来创建新的IndexSet
。
let set = IndexSet(arrayLiteral: 1,2,3,5,6,7,13,31)
let subset = set.filteredIndexSet { (index) -> Bool in
index >= 3 && index <= 13
}
答案 2 :(得分:0)
您可以按如下方式访问原始集的切片:
let slice = indexSet[indexSet.indexRange(in: 3...13)]
slice
访问现有元素,因此创建切片为O(1)