He estado haciendo un programa básico para encontrar el máximo, mínimo, mediana, varianza, modo, etc. de un vector. Todo fue bien hasta que llegué al modo.C++ Ayuda para encontrar el valor máximo en un mapa
De la forma en que lo veo, debería poder recorrer el vector, y para cada número que ocurre, aumento una tecla en el mapa. Encontrar la clave con el valor más alto sería la que más se produjo. Comparando con otras teclas me diría si se trata de una única respuesta de modo múltiple o ninguna.
Aquí está el trozo de código que me ha estado causando tantos problemas.
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;
Todo el programa se puede ver aquí. http://pastebin.com/MzPENmHp
Muchas gracias, funcionó a la perfección. – Sh0gun
Para un mapa grande, debería ser más rápido usar una función de miembro de mapa (quizás combinada con búsqueda binaria), std :: map :: upper_bound? –