Finding Mode of Vector of Ints in C++

So I'm trying to make a basic program to learn the basics of C++, I'm generating 100 random numbers from 0 to 100 and storing them in a vector, I am then displaying the sum, mean, median, mode, high and low of the vector. I have everything else done except the mode which is where I get stuck. Here is the code I have so far.

int modeFunction()
         numMode = 0;
         count = 0;
         for (int n = 0; n < 100; n++)
             for (int y = 0; y < 100; y++)
                 if (numVector.at(y) == numVector.at(n))
                    numMode = numVector.at(y);

         return numMode;

After that I get stuck because in my mind that should work but it doesn't. It just out puts the last number, usually 100. Any help would be much appreciated.


  • since all the values are between 0 and 100, you can find the mode efficiently with a histogram:

    std::vector<int> histogram(101,0);
    for( int i=0; i<100; ++i )
      ++histogram[ numVector[i] ];
    return std::max_element( histogram.begin(), histogram.end() ) - histogram.begin();