2013-03-21 37 views
7

Tôi đang tìm kiếm một datastructure tuần tự dai dẳng cho phép chèn ngẫu nhiên hiệu quả và xóa bỏ. Tôi thấy việc triển khai như sau:cây Clojure ngón tay và flexvec

Kể từ khi không có nhiều hoạt động trong clojure.data.finger cây trong hai năm qua, và những người khác là tương đối mới, tôi đã tự hỏi nếu ai đó có experince của việc sử dụng bất kỳ trong số này trong sản xuất, và cho dù có những lựa chọn thay thế mà tôi đã bỏ qua.

+0

Tại sao PersistentVector clojure của không đủ tốt? Bạn có thể thêm chi tiết về trường hợp sử dụng của mình không? – ordnungswidrig

+0

@ordnungswidrig, để đáp ứng với yêu cầu của bạn đối với trường hợp sử dụng của tôi: Tôi có một tài liệu được thể hiện dưới dạng một mảng. Để trả lời các sự kiện, tài liệu được cập nhật với các chèn và xóa tại một khoảng trống cụ thể trong tài liệu. Thông thường sẽ chỉ có một hoặc hai chèn hoặc xóa trong một tài liệu tương đối lớn. Với việc thực hiện vector liên tục của clojure, tôi phải tạo lại tài liệu trên mỗi sự kiện. Ví dụ như với cây ngón tay, tôi có thể chia nhỏ và tham gia tài liệu cùng với các khoảng bù được sửa đổi. – Inshallah

+0

Do chia sẻ cấu trúc nên không áp đặt chi phí lớn. Hoặc bạn có cần quyền truy cập vào các phần phân tách hay không, ví dụ: để tối ưu hóa trên đĩa bền bỉ? – ordnungswidrig

Trả lời

1

thực hiện Một clojure/core.rrb-vectorannounced. Vì nó nằm trong tài khoản github clojure, có vẻ như nó sẽ là sự triển khai thực tế.

+2

clojure/core.rrb-vector chỉ là của flexal của Michal chuyển sang được một thư viện contrib. –

Các vấn đề liên quan