Сортировка структур с постоянными членамиC++

Программы на C++. Форум разработчиков
Anonymous
Сортировка структур с постоянными членами

Сообщение Anonymous »

У меня есть структура POD S с членами const и std::vector vec, которую я хотел бы отсортировать. Следующее не скомпилируется:

Код: Выделить всё

std::sort(vec.begin(), vec.end(), [](const S& s1, const S& s2){return s1.x < s2.x;};
потому что операторoper= не совсем определен в S, и поэтому его не удается скомпилировать. Есть ли какой-нибудь удобный для STL способ сортировки vec, который хорошо работает с ? Добавлю, что мои константные члены концептуально являются константными (каждый объект S должен быть неизменяемым), но они абсолютно могут изменяться.
Кроме того, мы никогда не используем исходный вектор после его сортировки.
Вот лучшее решение, которое я мог придумать:
https://godbolt.org/z /8sxzoee1o
Мы создаем вектор индексов в vec и сортируем этот вектор с помощью нашего компаратора, а затем восстанавливаем, как будет выглядеть отсортированный vec.

Подробнее здесь: https://stackoverflow.com/questions/788 ... nt-members

Вернуться в «C++»