Сортировка подмножество std::vector через другой std::vector
Как можно отсортировать определенные индексы в std::vector, используя другой std::vector?
Например, у меня есть std::vector, который хранить в себе int'ы. Теперь я выбираю из него только чётные индексы и помещаю их в std::vector< std::reference_wrapper< int > >. На данный момент, я предполагаю, что второй vector хранит в себе "ссылку" на элементы первого. Далее я произвожу сортировку в надежде на то, что и в пером векторе четные индексы будут отсортированы, однако этого не происходит.
Возможно, я плохо объяснил, поэтому приведу пример кода:
#include <iostream>
#include <vector>
#include <algorithm>
template<typename T>
void printVector(const std::vector<T>& vector)
{
for (const auto& el : vector)
std::cout << el << " ";
std::cout << std::endl;
}
int main()
{
std::vector<int> vector = {7,5,1,3,2};
std::vector<std::reference_wrapper<int>> vector_ref({vector[0], vector[2], vector[4]});
printVector(vector_ref); // получаем 7 1 2
printVector(vector); // получаем 7 5 1 3 2
std::sort(vector_ref.begin(), vector_ref.end()); // сортирую vector_ref в надежде, что эта сортировка затронет элементы vector.
printVector(vector_ref); // получаем 1 2 7, как и ожидалось.
printVector(vector); // получаем 7 5 1 3 2, а ожидалось 1 5 2 3 7. То есть 0,2 и 4 индекс должны были быть отсортированы.
return 0;
}
Если через std::reference_wrapper это сделать невозможно, то какие есть еще варианты?