Код: Выделить всё
std::sort(vec.begin(), vec.end(), [](const S& s1, const S& s2){return s1.x < s2.x;};
Кроме того, мы никогда не используем исходный вектор после его сортировки.
Вот лучшее решение, которое я мог придумать:
https://godbolt.org/z /8sxzoee1o
Мы создаем вектор индексов в vec и сортируем этот вектор с помощью нашего компаратора, а затем восстанавливаем, как будет выглядеть отсортированный vec.
Подробнее здесь: https://stackoverflow.com/questions/788 ... nt-members