ファイルからデータを取得し、それをベクターに入れ、ベクター内で最も頻繁に使用される要素をチェックするプログラムを作成しました。(マップを使用)問題は、データに同じ数の要素がある場合です(2つのElement1、2つのElement2、1つのElement3)。Element1 が返され、「最も頻繁に使用される要素がない」という情報を渡す必要があります。私のコードは次のようになります:
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;
}