Что я хотел бы сделать, это сравнить ключи, если они
равно , затем сравните значения .
Нет, вы не можете сделать сравнение для std::multimap
по значениям .
Я бы предложил вместо этого использовать std::vector< std::pair<int, int> >
и просто отсортировать. Оператор <</a> из std::pair
позаботится о том, что вы хотите.
См. Здесь вывод
std::vector< std::pair<int, int> > vec{ {1,2}, {1,-1},{ 2,2 } ,{ -1,1 } };
std::sort(std::begin(vec), std::end(vec));
Обновление : Прочитав другой ответ (т. Е. std::multiset<std::tuple<int, int>>
), я подумал о том, насколько плохим является std::multiset::insert
.
Затем я придумал следующий бенчмарк, который показывает, почему на первом месте в вышеуказанной задаче должно быть std::vector
.
См. Быстрый онлайн тест здесь