Можно создать вектор итераторов на элементы мапы и отсортировать уже их как тебе требуется с помощью кастомного предиката, не трогая саму мапу.
std::map<int, int> m { {3, 1}, {1, 10}, {2, 5}, {0, 2}, }; std::vector<std::map<int, int>::iterator> v; v.reserve(m.size()); for(auto it = m.begin(); it != m.end(); ++it ) { v.emplace_back(it); } std::sort(v.begin(), v.end(), [](auto&& a, auto&& b) { return a->second < b->second; }); for(auto&& e: v ) { std::cout << e->first << " " << e->second << std::endl; }
А в чем глубинный смысл в цикле и в лямбде ставить &&?
Никакого с учётом отсутствия std::forward далее. const auto&
я у автора спрашивал)) не мог же уважаемый человек просто так по клавишам блямкать?
это я знаю. спасибо.
https://stackoverflow.com/a/25468564/13340536
А в чем проблема? Это автомат уже.
не совсем понял. 1. зачем? 2. как я понимаю, после такого цикла все объекты из контейнера будут "перемещены", и мы его не можем использовать дальше?
ну не используются у нас в коде "эти модные фичи". мы вообще застряли в середине нулевых поэтому тыкаю что-то новое в пет-проектах
я тебя понимаю, сам этот период прошел с 2000 по 2005
Обсуждают сегодня