Есть ли способ отсортировать одну переменную-член в коллекции структур с помощью стандартной библиотеки C++?C++

Программы на C++. Форум разработчиков
Anonymous
Есть ли способ отсортировать одну переменную-член в коллекции структур с помощью стандартной библиотеки C++?

Сообщение Anonymous »

Предположим, у меня есть вектор очень простой структуры:

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

struct SimpleStruct { int a; int b; int c; };
std::vector vs;
Я хочу отсортировать эту структуру по «a», оставив позиции «b» и «c» неизменными. По сути, поворот по , сортировка по , а затем отмена поворота. Например:

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

before: {1, 10, 11}, { 5, 100, 111}, {3, 1000, 1111}
after: {1, 10, 11}, {3, 100, 111}, {5, 1000, 1111} //'a' is now sorted, 'b' and 'c' relative position unchanged
Если бы я заботился только о правильности и хотел минимизировать количество потенциальных ошибок, используя стандартную библиотеку, очевидным решением было бы создать вторую коллекцию типа {value, index}, sort по значению, а затем перезаписать значение по соответствующему индексу.
Это невероятно неэффективно, поскольку концептуально все, что нам действительно нужно, — это стандартная операция сортировки с пользовательским сравнением и пользовательской заменой.< /p>
Есть ли способ сделать это на C++ с использованием стандартной библиотеки без создания собственного метода сортировки?
Предпочтителен C++20, желательно без использование диапазонов.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ucts-using

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