Trong C++ và các ngôn ngữ khác, thư viện bổ sung triển khai vùng chứa nhiều chỉ mục, ví dụ: Boost.Multiindex. Đó là, một bộ sưu tập lưu trữ một loại giá trị nhưng duy trì nhiều chỉ mục khác nhau trên các giá trị đó. Các chỉ số này cung cấp các phương thức truy cập và hành vi sắp xếp khác nhau, ví dụ: map, multimap, set, multiset, array, vv Thời gian chạy phức tạp của container đa chỉ mục thường là tổng của các phức tạp của các chỉ số riêng lẻ.Cách tiếp cận thành ngữ nhất đối với các bộ sưu tập đa chỉ mục trong Haskell là gì?
Có tương đương với Haskell hoặc những người sáng tác riêng của họ không? Cụ thể, cách thành ngữ nhất để thực hiện một bộ sưu tập kiểu T với cả hai loại chỉ số là gì (T là một thể hiện của Ord
) cũng như một loại bản đồ chỉ mục (giả sử rằng một giá trị khóa của loại K có thể được cung cấp cho mỗi T, hoặc rõ ràng hoặc thông qua một hàm T -> K
)?
Chính xác là gì "Mặc dù nó được thiết kế để sử dụng các chỉ mục duy nhất, khi bạn chèn cùng một phần tử nhiều lần, hầu hết các trình biên dịch (chắc chắn GHC) sẽ làm cho các giá trị đặt vào cùng một vị trí." nghĩa là? –
Nếu bạn chèn cùng một mục vào Bản đồ 5 lần, nó sẽ không mất nhiều gấp năm lần không gian như chèn nó một lần, bởi vì nội bộ, tất cả năm giá trị là con trỏ đến cùng một vị trí. – gereeter