type のマップに char を挿入する問題を解決しようとしています<char, int>
。char がマップに既に存在する場合は、int を 1 増やします。マップ内の要素に優先順位を付けるための独自のコンパレータを作成しました。優先順位は、最終的に出力が順序に従わないため、期待どおりに機能しません。
#include <iostream>
#include <string>
#include <map>
#include <iterator>
using namespace std;
struct classcomp {
bool operator()(const int& a, const int& b) const {
return a < b;
}
};
bool isPresent(map<char,int,classcomp> mymap, char c){
return (mymap.find('b') != mymap.end());
}
int main(){
string input="dadbadddddddcabca";
map<char,int,classcomp> mymap;
char temp;
for(string::iterator it = input.begin(); it!=input.end(); ++it){
temp = *it;
if(!isPresent(mymap, temp))
mymap.insert(pair<char,int>(*it,1));
else
mymap[temp]++;
}
for (auto& x: mymap) {
cout << x.first << ": " << x.second << '\n';
}
return 0;
}
次の出力が得られます。
a: 4
b: 2
c: 2
d: 8