ベクトル内の値を並べ替えるために現在推奨されている方法は何ですか?
回答:
sort_by
、完全にカスタム述語を可能にあまりにも方法が。
self.sort()
== self.sort_by(|a, b| a.cmp(b))
。
.sort()
タイプT
がcmp::Ord
トレイトを実装している場合は、呼び出すことができます。
sort_unstable
少し速いことも確認できますが、「等しい」要素を並べ替えることができます
上で提案されたソリューションは整数のベクトルをソートできますが、フロートのベクトルをソートする際に問題がありました。
最も簡単な解決策は、より速いソートクレートを使用することでしたフロートを並べ替えることもできる。クイックソートクレートは、任意のタイプの他のベクトルをソートすることもでき、比較(sort_by)を使用してソートするメソッドも実装します。
以下はRustコードです:
extern crate quickersort;
//let's create the vector with the values
let mut vals = Vec::new();
vals.push(31.2);
vals.push(31.2);
vals.push(10.0);
vals.push(100.4);
vals.push(4.1);
quickersort::sort_floats(&mut vals[..]); // sort the vector
v.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Equal))
。たとえば、フロートで機能する必要があります。(配列内のNaNで何をしたいかに応じて、より注意深い比較関数を作成できます。)