Как использовать `std :: multimap` или любой другой контейнер для сортировки нескольких значений? - PullRequest
3 голосов
/ 07 мая 2019

Я с нетерпением жду решения проблемы, когда сначала мне нужно отсортировать некоторые данные.

Пример - Ключ -> Значения в std::multimap.

Хранит данные в порядке возрастания автоматически на основе ключей.

Но возникает проблема, когда мне нужно отсортировать повторяющиеся ключи по их значениям .

Я попробовал глупый способ просто перенести набор повторяющихся ключей s в новый std::multimap и отсортировать и сохранить обратно, но это слишком много повторяющихся кодировок дляреализовать одну вещь, вызывающую увеличение сложности пространства и времени.

Например:

Key - Values
 9  -  e
 3  -  b
 1  -  c
 1  -  a
 5  -  d
 9  -  a

Сортированное значение ожидается как:

1 - a
1 - c
3 - b
5 - d
9 - a
9 - e

Но вывод с использованием multimap вернет:

1 - c
1 - a
3 - b
5 - d
9 - e
9 - a

И эта проблема еще более обостряется, когда существует несколько наборов значения с, соответствующих клавише .

Поскольку я новичок вC++, я не могу понять, как это сделать, используя уже существующие контейнеры.

Tего легко реализовать в SQL, но в C++ я не знаю.

1 Ответ

3 голосов
/ 07 мая 2019

Если вы можете немного изменить структуру данных,

  1. , вы можете использовать либо std :: vector из std::pair<int, char>, а затем отсортировать его соответственно,
  2. или просто используйте std::set<std::pair<int, char>>, который будет отсортирован по умолчанию opererator< из std::pair.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...