我有這兩個vector<double>
的mass
和velocity
都有相同的大小N
。它們包含有關N粒子質量和速度的信息。 mass[i]
和velocity[i]
因此是第i個粒子的屬性「鎖定」兩個載體,並對它們進行分類
是否有可能在C++中將這兩個向量「鎖定」在一起並按照質量遞增的順序對它們進行排序?因此,在排序之後,矢量mass
應該是遞增的順序,並且速度矢量應該包含相應的分選質量的速度。在分選質量=(4,2,1,3)和速度=(13,14,15,16) 之前,將質量=(1,2,3,4)和速度=(15,14,16,13 )
我知道這種情況的一個(非有效)的方法是通過使用std::sort
通過重載<
數據傳輸到的結構的
struct particle
{
double mass;
double velocity;
bool operator < (const particle& str) const
{
return (mass < str.mass);
}
};
一個矢量,並創建vector<particle> particlelist(N)
然後排序此載體正如我在上面的定義中所做的那樣。
我不想把我的數據放入結構數組中,因爲我聽說與數組結構方法(至少在CUDA中)相比效率低下。
定義「鎖定」好,你的意思是像如果一個人改變一個屬性的其他變化,我都如此? –
我已經編輯並澄清了問題。 – smilingbuddha
相關:http://stackoverflow.com/questions/3398819/sort-by-proxy-or-sort-one-container-by-the-contents-of-another-in-c –