我正在尝试解决一个问题,即我将字符插入到 type 的地图中<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