我正在为已排序的对象集合编写接口。像往常一样,我让用户来指定这些项目的排序方式。然而,我目前在提供键值接口(排序键与值显式分离)或仅值接口(值也是排序键,或者用户必须处理单独的排序)之间感到困惑键通过传入一些比较函数)。
在我看来,键值接口迫使用户始终拥有与值分开的键,即使某些值自然形成了自己的键。然而,它确实免除了用户处理密钥的责任,在使用我的 API 时可能会导致更简单和更清晰的用户代码。仅值接口允许更紧凑地表示作为其自己的键的值,但在存在自然键值区别的情况下强制用户跟踪和处理自己的键。
当然,有文献支持这两种方法,尽管在我看来(这可能是错误的)旧文献倾向于仅使用价值方法,而较新的文献更喜欢键值方法。
我很好奇你在这种情况下的偏好。我们是否已经到了一个通常比另一个更受欢迎的时间点?如果没有,您通常使用什么,为什么?