次のデータ型があります。
ISet<IEnumerable<Foo>>
そのため、一連のシーケンスを作成できる必要があります。たとえば、これは問題ありません:
ABC,AC,A
しかし、これはそうではありません (「AB」がここで繰り返されるため):
AB,A,ABC,BCA,AB
しかし、これを行うには、「セット」に重複が含まれないようにするIEnumerable
には、他の種類のデータ型でmy をラップする必要があります。
ISet<Seq>
//where
Seq : IEnumerable<Foo>, IEquatable<Seq>
したがって、2 つのシーケンスを比較し、Set データ構造に重複を排除する方法を提供できます。
私の質問は: シーケンスを比較できる高速なデータ構造はありますか? Seq
どういうわけか、作成または2つ追加すると、何らかの累積値が計算されると考えています。
言い換えれば、私がこれを行うことができるような方法で Seq を実装することは可能ですか?
var seq1 = new Seq( IList<Foo> );
var seq2 = new Seq( IList<Foo> )
seq1.equals(seq2) // O(1)
ありがとう。