I have this two `vector<double>` 's `mass` and `velocity` both of the same size `N`. They contain the information about the mass and velocity of N particles. `mass[i]` and `velocity[i]` are thus properties of the i'th particle 

Is it possible in C++ to "lock" these two vectors together and sort them in increasing order of mass? 
Thus after the sorting the vector `mass` should be in increasing order, and the velocity vector should contain the corresponding velocities of the sorted masses

e.g. Before sorting mass = (4,2,1,3) and velocity = (13, 14,15,16 )
 After sorting mass=(1,2,3,4) and velocity =(15, 14, 16, 13)

The one (non-efficient) way I know for this is to transfer the data into an vector of struct's

```
struct particle
{

double mass;
double velocity;

bool operator < (const particle& str) const

 {
    return (mass < str.mass);
  }

};

```

and create `vector<particle> particlelist(N)` and then sort this vector by using the `std::sort` by overloading the `<` operator as I have done in the definition above. 

I do not want to put my data into Array of Structures fashion since I have heard it is inefficient compared to the Structure of Arrays approach(at least in CUDA).