Как найти минимальный элемент в multimap?
Получается только обозначить MIN как огромное число, но пользователь то может превысить его. Знаю, что решение на поверхности, но не могу понять, как это делается. Нужно найти минимальное значение в MULTIMAPe, только не задавая огромное число, а вот например присвоить переменной MIN 1 элемент multimapa. Можно ли так сделать, если да, то как?
float MIN(multimap<int, float>& map)
{
float MIN;
for (const auto& num : map)
{
if (MIN >= num.second)
{
MIN = num.second;
}
}
return MIN;
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Раз вас все равно интересует значение, а не ключ...
auto * min_iter = min_element(m.begin(),m.end(),
[](auto a, auto b) { return a.second < b.second;});
Например, так. Получите итератор, указывающий на наименьший элемент (или первый из них).
Автор решения: IR42
→ Ссылка
Нужно не просто задать огромное число, а нужно задать максимальное для данного типа:
float MIN = std::numeric_limits<float>::max();
Но проще воспользоваться алгоритмом стандартной библиотеки:
auto min_it = std::min_element(map.begin(), map.end(), [](const auto& a, const auto& b) {
return a.second < b.second;
});
if (min_it != map.end()) {
cout << "min_element: " << min_it->second << endl;
} else {
cout << "map is empty" << endl;
}