Или вы используете вектор пар, который вы затем можете легко отсортировать с помощью алгоритма сортировки stl , или вы пишете свой собственный метод сортировки. Поэтому у вас есть несколько вариантов .
В вашем собственном алгоритме сортировки вы можете позаботиться не только о сортировке вашего x-вектора, но и y-вектора соответственно.
Здесь в качестве примера используется пузырьковая сортировка для двух векторов (vec1
и vec2
).
bool bDone = false;
while (!done) {
done = true;
for(unsigned int i=0; i<=vec1.size()-1; ++i) {
if ( vec1.at(i) > vec1.at(i+1) ) {
double tmp = vec1.at(i);
vec1.at(i) = vec1.at(i+1);
vec1.at(i+1) = tmp;
tmp = vec2.at(i);
vec2.at(i) = vec2.at(i+1);
vec2.at(i+1) = tmp;
done = false;
}
}
}
Но опять же, как уже отмечали другие, вы должны использовать std::vector< std::pair<double, double> >
и просто отсортировать его.