NSIndexSet和NSSet有什么区别?

7

我对Cocoa有些陌生,正在阅读有关NSIndexSet的内容。为什么需要它呢?在我看来,NSIndexSet只是一个整数类型的NSSet,是这样吗?创建一个单独的集合的目的是什么?

1个回答

12

有几个原因:

  1. NSIndexSet 存储无符号整型的基本类型,而 NSSet 存储对象。
  2. NSIndexSet 专门针对存储无符号整数进行了优化,尤其是将一组整数存储到另一个数据结构(如 NSArray)中。

1
进一步来说,NSIndexSet允许您按顺序或逆序迭代索引。NSSet是无序的,而NSOrderedSet是手动排序的(这意味着您可以通过在错误位置插入对象来打破顺序)。 - Peter Hosey
明白了。我刚刚注意到另一件事情。NSIndexSet实际上使用NSRange来存储连续索引,非常优化用于将索引值存储到其他集合中。 - Tony
NSSet的操作是O(1)(哈希),而大多数NSIndexSet的操作是O(N)(循环)。 - alex-i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接