我想保留一下:
( int * int * (my_own_type) )
我想通过(int * int)比较元素wolud - my_own_set对顺序没有影响。我需要的只是快速搜索元素。
怎么做?
答案 0 :(得分:2)
您需要制作一个能够进行所需比较的模块(改编自https://stackoverflow.com/a/4277832):
module MyTypeOrdered = struct
type t = int * int * (my_own_type)
let compare (x1, y1, _) (x2, y2, _) = compare (x1, y1) (x2, y2)
end
module MyTypeSet = Set.Make(MyTypeOrdered)
使用地图非常相似
module IntInt = struct
type t = int * int
let compare = compare
end
module MyTypeMap = Map.Make(IntInt)
或只是
module MyTypeMap = Map.Make(struct type t = int * int let compare = compare end)