我想在Rust中按照预定义的顺序就地对
例如:
我想要就地进行这个操作。在我的使用情况中,
这个问题是如何获得排序一个 Vec 的索引?的后续问题。
Vec
进行排序(重新排序)。例如:
let i = vec![0, 3, 2, 1];
let mut v = vec!["a", "b", "c", "d"];
v.sort_by_indices(&i);
assert_eq!(v, &["a", "d", "c", "b"]);
我想要就地进行这个操作。在我的使用情况中,
v
占用了很多内存。这个问题是如何获得排序一个 Vec 的索引?的后续问题。
i
是否是一个问题?如果不是,请查看此解决方案。 - Ömer Erdeni
包含输出值应该来自哪个索引,还是输入值应该到哪个索引?也就是说,如果i = [1, 2, 0]
,结果应该是["b", "c", "a"]
还是["c", "a", "b"]
? - Jmbargsort
函数之前的状态。这里的i
是argsort
的输出,而v
是使用argsort
排序的。如果是这种情况,我认为["c","a","b"]将是@Jmb案例的预期结果。 - Joe_JingyuVec::sort
实现通过关注is_less
来交换元素,但这种行为是封装的,这意味着向后兼容性不能保证,如果你要使用它,请记住这一点。 - Ömer Erden