#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;
}
本文介绍了一个通用模板函数,用于寻找给定范围内的最频繁出现的元素。通过排序和迭代,该函数能够高效地找出指定容器中最常出现的值。示例中使用了整数数组,但该方法适用于任何可比较类型。
2037

被折叠的 条评论
为什么被折叠?



