统计出现次数最多的程序

来源:互联网 发布:淘宝店铺怎么自己装修 编辑:程序博客网 时间:2024/05/01 05:19
template<typename T>typename T::value_type mostFre(T first,T last){//计算分配内存的大小std::size_t amount=0;T start=first;while(start!=last){amount++;start++;}//定义类型别名typedef std::vector<typename T::value_type> VecType;//创建vector对象,用于保存输入序列的副本VecType vec(amount);VecType::itertor newFirst=vec.begin();VecType::itertor nweLast=vec.end();//将输入序列复制到vector对象std:uninitialized_copy(first,last,newFirst);std::sort(newFirst,newLast);//对副本进行排序,使得相同值出现在相邻的位置std::size_t maxOccu=0,occu=0;//出现最频繁的次数,当前值的次数VecType::iterator preIter=newFirst;//指向当前值的前一个值VecType::iterator maxOccuElemIt=newFirst;//指向当前出现最频繁的值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;}