Сортировка подмножество 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 это сделать невозможно, то какие есть еще варианты?


Ответы (0 шт):