请教大家一个问题,例如这样一组数据
............
192.168.1.12
192.129.12.12
212.113.312.312
123.123.22.123
123.123.22.123
212.113.312.312
212.113.312.312
192.128.12.34
122.212.23.34
123.34.55.33
122.212.23.34
122.212.23.34
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
123.34.55.33
123.34.55.33
111.11.11.1
111.11.11.1
111.11.11.1
121.212.34.54
.............
.......
如何将里面出现次数最多的一条数据,提取出来,例如111.11.11.1
大家有什么好的想法或者好的算法可以解决,可以相互讨论,有源码最好!
............
192.168.1.12
192.129.12.12
212.113.312.312
123.123.22.123
123.123.22.123
212.113.312.312
212.113.312.312
192.128.12.34
122.212.23.34
123.34.55.33
122.212.23.34
122.212.23.34
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
111.11.11.1
123.34.55.33
123.34.55.33
111.11.11.1
111.11.11.1
111.11.11.1
121.212.34.54
.............
.......
如何将里面出现次数最多的一条数据,提取出来,例如111.11.11.1
大家有什么好的想法或者好的算法可以解决,可以相互讨论,有源码最好!
struct ds
{
CString str; //x pixel
int num; //y pixel
bool operator < (const ds &m)const {
return num > m.num;
} //降序排列
dt(void){}; ~dt(void){}};然后vector<dt> T;对于每条记录,使用find函数,能找到记录就num++,找不到T push_back
然后sort。第一条就是次数最多的数据。另外,还可以开一个标记变量max_num,max_index其实每次存的时候,T的当前元素num>max_num,max_index=当前序号。这样就不用sort