मैं एक वेक्टर के अधिकतम, न्यूनतम, औसत, भिन्नता, मोड इत्यादि को खोजने के लिए एक बुनियादी कार्यक्रम कर रहा हूं। सब कुछ ठीक हो गया जब तक कि मैं मोड में नहीं आया।सी ++ मानचित्र में अधिकतम मूल्य ढूँढने में मदद
जिस तरह से मैं इसे देखता हूं, मुझे वेक्टर के माध्यम से लूप करने में सक्षम होना चाहिए, और प्रत्येक संख्या के लिए मैं मानचित्र पर एक कुंजी बढ़ाता हूं। उच्चतम मूल्य के साथ कुंजी ढूंढना तब सबसे अधिक होता है। अन्य कुंजियों की तुलना में मुझे बताएगा कि यह एक एकल या कोई मोड उत्तर नहीं है।
यहां कोड का हिस्सा है जो मुझे इतना परेशानी पैदा कर रहा है।
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;
संपूर्ण कार्यक्रम यहां देखा जा सकता है। overkill बस के बाद maax = it->first;
currentMax = it->second;
जोड़ते हैं, लेकिन अधिकतम पता लगाने के लिए एक नक्शा उपयोग कर रहा है: http://pastebin.com/MzPENmHp
धन्यवाद बहुत बहुत, पूरी तरह से काम किया। – Sh0gun
एक बड़े मानचित्र के लिए, यह नक्शा सदस्य फ़ंक्शन (शायद बाइनरी खोज के साथ संयुक्त) का उपयोग करने के लिए तेज़ होना चाहिए, std :: map :: upper_bound? –