65,186
社区成员




#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <typename T>
typename T::value_type mostfnc(typename T::iterator first, typename T::iterator last)
{
//T::
size_t amount = 0;
typename T::iterator start = first;
while (start != last)
{
start++;
amount ++;
}
/*typename vector <typename T::value_type > VectType;*/
typedef vector <typename T::value_type > VectType;
VectType vec(amount); //mark
typename VectType::iterator VectFirst = vec.begin();//mark
typename VectType::iterator VectEnd = vec.end();//mark
copy(first, last, VectFirst); //将first到last的容器内的值拷贝到以VectFirst开始的容器内!
sort(VectFirst, VectEnd);
size_t maxOcuu = 0;
size_t occ = 0;
typename VectType::iterator PriIter = VectFirst;//mark
typename VectType::iterator maxOccuItem = VectFirst;//mark
while (VectFirst != VectEnd)
{
if (*VectFirst != *PriIter)
{
if (occ>maxOcuu)
{
maxOcuu = occ;
maxOccuItem = PriIter;
}
occ=0;
}
occ++;
PriIter = VectFirst;
VectFirst++;
}
if (occ>maxOcuu)
{
maxOcuu = occ;
maxOccuItem = PriIter;
}
return *maxOccuItem;
}
int main()
{
int arr[18] = {1,2,3,4,5,6,7,8,9,1,1,2,2,2,3,3,3,8};
vector <int > vec(arr,arr+18);
vector <int >::iterator beg1 = vec.begin();
vector <int >::iterator end1 = vec.end();
cout <<mostfnc<vector<int> >(beg1,end1) <<endl;;
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <typename T>
typename T::value_type mostfnc(T first, T last)
{
//T::
size_t amount = 0;
T start = first;
while (start != last)
{
start++;
amount ++;
}
/*typename vector <typename T::value_type > VectType;*/
typedef vector <typename T::value_type > VectType;
VectType vec(amount); //mark
typename VectType::iterator VectFirst = vec.begin();//mark
typename VectType::iterator VectEnd = vec.end();//mark
uninitialized_copy(first, last, VectFirst); //将first到last的容器内的值拷贝到以VectFirst开始的容器内!
sort(VectFirst, VectEnd);
size_t maxOcuu = 0;
size_t occ = 0;
typename VectType::iterator PriIter = VectFirst;//mark
typename VectType::iterator maxOccuItem = VectFirst;//mark
while (VectFirst != VectEnd)
{
if (*VectFirst != *PriIter)
{
if (occ>maxOcuu)
{
maxOcuu = occ;
maxOccuItem = PriIter;
}
occ++;
PriIter = VectFirst;
VectFirst++;
}
}
if (occ>maxOcuu)
{
maxOcuu = occ;
maxOccuItem = PriIter;
}
return *maxOccuItem;
}
int main()
{
int arr[18] = {1,2,3,4,5,6,7,8,9,1,1,2,2,2,3,3,3,8};
vector <int > vec(arr,arr+18);
vector <int >::iterator beg1 = vec.begin();
vector <int >::iterator end1 = vec.end();
cout <<mostfnc(beg1,end1) <<endl;;
return 0;
}