2017-08-17 17 views
1

前の質問では、lambdaを使用して配列内の元の位置を追跡し、インデックスを並べ替える方法を示しました。C++のsortを使用したインデックスによる並べ替え

C++ sorting and keeping track of indexes

私は、リストを並べ替えますが、元のインデックスを格納したいです。 1つの方法は、インデックスをソートしてリストを並べ替えることです。これには2回のパスが必要で、2番目のパスはO(n)なので、おそらくそれほど悪くはありません。しかし、値の並べ替えとリストのスワップが同時に可能かどうかは疑問でした。問題は、比較のためのラムダには2つのパラメータしかないということです。

どう書くための最良の方法です:ので、vが並べ替えされ

template<typename T> 
sortWithIndexes(v, indexes, n) { 

} 

は、インデックスは、vの各要素の元の位置が含まれていますか?

+0

インデックスだけを並べ替えるのはなぜですか? – LogicStuff

+5

あなたは 'pair ' – user463035818

+1

のリストを並べ替えることができます@Logicstuff非常に頻繁に配列にジャンプし、データを直線的にスキャンしたいと思います。これを空間的に連続させることは非常に価値があります。 – Dov

答えて

0

同じようにstd::multimapを使用できます。 w.r.tキーが自動的にソートされます。

関連する問題