maxal писал(а):
С map проблем бы не было - он всегда отсортирован по ключу. Вопрос же был именно про multimap, который хотя и отсортирован по ключу, тем не менее не гарантирует никакого порядка на элементах с равными ключами (equal_range).
Я был немного некорректен
, в С++ multimap отсортирован по ключу. Замечу только, что этот ключ не обязан совпадать ни с myfirst, ни с mysecond. Ключ суть сущность внешняя по отношению к хранимому объекту.
Если Вам надо отстортировать по mysecond, потом по myfirst, проще всего генерировать составной ключ (хотя не всегда приемлемо, поелику тогда myfirst при выборке надобен). Это, правда, предполагает разделитель, меньший любого mysecond. Коли Ваш ключ с mysecond не связан, придется Вам пользоваться vector'ом. В связи с чем вопрос -- что дороже -- сортировать vector иттераторов, или проще сами структуры? Альтернатива -- скомбинировать новый "sortedmultimap" из двух контейнеров. Тут Ваш главный вопрос -- как определить новый find(). Что Вам нужно -- найти первый попавшийся, или с наименьшим myfirst?