Сортировка объектов по ключу, соответствующему определенной последовательностиC++

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

Сообщение Anonymous »

У меня есть последовательность структур, например

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

struct Foo
{
std::string key;
int value;
};
Точки данных, представленные этими структурами, могут поступать в любом порядке, но выходить должны в определенном порядке. Я бы представил этот порядок последовательностью ключей, например:

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

const std::vector keySequence = {"thisMustBeFirst", "thenThisOne", "andThenThatOne"};
Теперь, имея std::vector и мою жестко запрограммированную последовательность клавиш, я хочу упорядочить входные данные так, чтобы каждый объект находился в позиции своего ключа в необходимая последовательность. Предварительное условие гарантирует, что все ключи действительно существуют во входных данных, поэтому меня здесь беспокоит только сортировка.

Мой первый план был std::sort, но мне кажется, что это может быть неправильным подход, потому что я не могу найти очевидную функцию сравнения, которая могла бы его предоставить. Может быть, я неправильно об этом думаю?
Не существует жестких требований к структурам данных, так что, возможно, здесь есть другой дизайн, который работает лучше?
Буду признателен за любые предложения.

Подробнее здесь: https://stackoverflow.com/questions/792 ... c-sequence

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