我有一个BTreeMap<f64,_>并想x在其中留下号码low < x < high。但split_off(k)无法控制k包容性或排他性。
这是 eps 的临时解决方案:
// delete all numbers >= high
let _ = map.split_off(high);
// want to delete all numbers <= low
map = map.split_off(low+1e-8);
Run Code Online (Sandbox Code Playgroud)
正确的做法是把元素一一删除,我认为是可以采取的O(n lg n)。有没有办法使用map.range((Excluded(&low), Excluded(&high)))和删除 中的范围O(lg n)?看起来我需要map.erase(range)或map.split_off_after(k)。
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |