#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
template <typename T>
typename T mosFre(T first,T last)
{
sort(first,last);
size_t maxOccu = 0,occu = 0;
T preIter = first,maxOccuElemIt = first;
while(first != last)
{
if(*first != *preIter)
{
if(occu >maxOccu)
{
maxOccu = occu;
maxOccuElemIt = preIter;
}
occu = 0;
}
++occu;
preIter = first;
++first;
}
//occur count of the last value compare to the current maxcount
if(occu > maxOccu)
{
maxOccu = occu;
maxOccuElemIt = preIter;
}
return maxOccuElemIt;
}
int main()
{
int ia[] = {2,2,3,3,3,6};
vector <int> ivec(ia,ia+sizeof(ia)/sizeof(int));
cout <<*mosFre(ivec.begin(),ivec.end())<<endl;
system("pause");
return 0;
}
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
template <typename T>
typename T mosFre(T first,T last)
{
sort(first,last);
size_t maxOccu = 0,occu = 0;
T preIter = first,maxOccuElemIt = first;
while(first != last)
{
if(*first != *preIter)
{
if(occu >maxOccu)
{
maxOccu = occu;
maxOccuElemIt = preIter;
}
occu = 0;
}
++occu;
preIter = first;
++first;
}
//occur count of the last value compare to the current maxcount
if(occu > maxOccu)
{
maxOccu = occu;
maxOccuElemIt = preIter;
}
return maxOccuElemIt;
}
int main()
{
int ia[] = {2,2,3,3,3,6};
vector <int> ivec(ia,ia+sizeof(ia)/sizeof(int));
cout <<*mosFre(ivec.begin(),ivec.end())<<endl;
system("pause");
return 0;
}