我有这两个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 –