をソート私はこの2 vector<double>
のmass
とvelocity
同じサイズN
の両方を持っています。それらは、N個の粒子の質量および速度に関する情報を含む。 mass[i]
とvelocity[i]
は、i番目の粒子の性質です。2つのベクトルを「ロック」と彼らに
これらの2つのベクトルを「ロック」して質量の大きい順に並べ替えることはC++で可能でしょうか? ソートの後、ベクトルmass
は昇順でなければならず、速度ベクトルはソートされたマスの対応する速度を含むべきである。
ソート前に質量=(4,2,1,3)と速度=(13,14,15,16) 質量=(1,2,3,4)と速度=(15,14,16,13)私はこれを知っている)
1(非効率的)な方法は、構造体の
struct particle
{
double mass;
double velocity;
bool operator < (const particle& str) const
{
return (mass < str.mass);
}
};
のベクターにデータを転送し、vector<particle> particlelist(N)
を作成し、<
をオーバーロードすることにより、std::sort
を使用して、このベクトルをソートすることです私が上記の定義で行ったように、演算子。
配列の構造のファクトリー(少なくともCUDAでは)と比較して非効率的であると聞いたので、私は自分のデータを構造体の配列に入れたくありません。
は1つが、私同様、他の変更をプロパティを変更する場合は以下のように意味ですか優れた「ロック」を定義しますか? –
私は編集を行い、質問を明確にしました。 – smilingbuddha
関連:http://stackoverflow.com/questions/3398819/sort-by-proxy-or-sort-one-container-by-the-contents-of-another-in-c –