Как я могу сортировать два вектора одинаково, с критериями, которые используют только один из векторов?
Например, предположим, что у меня есть два вектора одинакового размера:
vector<MyObject> vectorA;
vector<int> vectorB;
Затем я сортирую vectorA
, используя некоторую функцию сравнения. Эта сортировка переупорядочена vectorA
. Как я могу применить одно и то же переупорядочение к vectorB
?
Один из вариантов заключается в создании структуры:
struct ExampleStruct {
MyObject mo;
int i;
};
а затем отсортировать вектор, содержащий содержимое vectorA
и vectorB
, зашифрованный в один вектор:
// vectorC[i] is vectorA[i] and vectorB[i] combined
vector<ExampleStruct> vectorC;
Это не похоже на идеальное решение. Существуют ли другие варианты, особенно в С++ 11?