65,210
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <typename T>
typename T::value_type mostFre(T first, T last)
{
typedef vector<typename T::value_type> VecType;
VecType vec;
copy(first, last, back_inserter(vec));
VecType::iterator newfirst = vec.begin();
VecType::iterator newlast = vec.end();
sort(newfirst, newlast);
size_t maxOccu = 0, occu = 0;
VecType::iterator preIter = vec.begin();
VecType::iterator maxOccuElemIt = vec.begin();
while (newfirst!=newlast)
{
if (*newfirst != *preIter)
{
if (occu > maxOccu)
{
maxOccu = occu;
maxOccuElemIt = preIter;
}
occu = 0;
}
++occu;
preIter = newfirst;
++newfirst;
}
if (occu > maxOccu)
{
maxOccu = occu;
maxOccuElemIt = preIter;
}
return *maxOccuElemIt;
}
int main()
{
int ia[] = {1,2,7,4,3,6,7};
vector<int> ivec(ia,ia+7);
cout << "found this element: " << mostFre(ivec.begin(),ivec.end()) << endl;
return 0;
}