Zrobiłem podstawowy program, aby znaleźć maksimum, min, medianę, wariancję, tryb itd. Wektora. Wszystko poszło dobrze, aż dotarłem do trybu.C++ Pomoc w znalezieniu maksymalnej wartości na mapie
Sposób, w jaki to widzę, powinien być w stanie przechodzić przez wektor, a dla każdej liczby, która występuje, zwiększam klucz na mapie. Znalezienie klucza o najwyższej wartości byłoby tym, które wystąpiło najwięcej. W porównaniu do innych kluczy powiedziałbym mi, czy jest to odpowiedź pojedyncza czy wielokrotna.
Oto fragment kodu, który przysporzył mi tyle kłopotów.
map<int,unsigned> frequencyCount;
// This is my attempt to increment the values
// of the map everytime one of the same numebers
for(size_t i = 0; i < v.size(); ++i)
frequencyCount[v[i]]++;
unsigned currentMax = 0;
unsigned checked = 0;
unsigned maax = 0;
for(auto it = frequencyCount.cbegin(); it != frequencyCount.cend(); ++it)
//checked = it->second;
if (it ->second > currentMax)
{
maax = it->first;
}
//if(it ->second > currentMax){
//v = it->first
cout << " The highest value within the map is: " << maax << endl;
Cały program można obejrzeć tutaj. http://pastebin.com/MzPENmHp
Dziękuję bardzo, pracował idealnie. – Sh0gun
W przypadku dużej mapy powinno być szybciej używać funkcji członka mapy (może być połączone z wyszukiwaniem binarnym), std :: map :: upper_bound? –