我有这个两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) )
我知道的一种(非高效)方式是将数据传输到struct的向量中
struct particle
{
double mass;
double velocity;
bool operator < (const particle& str) const
{
return (mass < str.mass);
}
};
Run Code Online (Sandbox Code Playgroud)
vector<particle> particlelist(N)然后使用std::sortby重载<运算符创建然后对此向量进行排序,就像我在上面的定义中所做的那样.
我不想把我的数据放入Array of Structures时尚,因为我听说它与阵列结构方法相比效率低(至少在CUDA中).