Concurrent Clean : Finger Trees : 適用対象
基本的なところは大体実装できた。
作りながら思っていたのだけれど、これってどういうところに使うのがいいだろう?
参考にしている論文には
- random-access sequences
- max-priority queues
- ordered sequences
- interval trees
という例がある。
Finger Treeのよい所は、両端のどちらにもO(1)で要素を追加・削除できるところと、任意の場所で分割することがO(log N)でできるところ。
ただし、高階関数は効率が悪いので、specialを指定できないと、専用の実装に比較して不利になる。なので、一般的な使い方が予想できる所には、あらかじめspecial指定をいれておきたい。