我做了一个程序,它从文件中获取数据,将其放入向量中,然后检查向量中最频繁的元素。 (使用map) 问题是当我在数据中有相同数量的元素时(两个Element1,2个Element2,1个Element3)。它返回Element1,我需要它传递“没有最频繁元素”的信息。 我的代码如下所示:C++在地图中最频繁的元素
using namespace std;
bool comp(const pair<string, unsigned long> &pair1,
const pair<string, unsigned long> &pair2) {
return pair1.second < pair2.second;
}
string Odczyt::tokenizer() {
inFile.open("baza.txt");
while (!inFile.eof()) {
for (int i = 0; i < 4; i++) {
inFile >> row1[i] >> row2[i] >> row3[i] >> row4[i];
}
}
sVector1.assign(row1, row1 + 3);
string w1 = most_occurred(sVector1);
return w1;
}
string Odczyt::most_occurred(vector<string> &vec) {
map<string, unsigned long> str_map1;
for (vector<string>::const_iterator it = vec.begin(); it != vec.end();
++it) {
++str_map1[*it];
}
return max_element(str_map1.begin(), str_map1.end(), comp)->first;
}
什么都要你的逻辑打破关系是什么?你只是没有回报什么或所有的关系? – andre 2013-04-30 15:45:04
我只需要最频繁的元素,如果有任何或没有信息。 – user2336450 2013-04-30 15:55:56