私は以下のコードをしようとすると、それはキーではなく値としてアドレスを格納し、 ので、「同じキーを二回保存されている」mallocを使用してマップキーを割り当てる方法は?
static map<const char *, int> lMap;
const char * msg = "hhhhh";
char *buf = (char *) malloc(6);
strcpy(buf, msg);
lMap.insert(make_pair(buf, 85));
buf = (char *) calloc(5, sizeof (char));
strcpy(buf, msg);
lMap.insert(make_pair(msg, 85));
cout << "size: " << lMap.size() << endl;
map<const char *, int>::const_iterator it2;
for (it2 = lMap.begin(); it2 != lMap.end(); ++it2) {
cout << it2->first << " | " << it2->second << endl;
}
印刷結果:
size: 2
hhhhh | 85
hhhhh | 85
なぜ 'std :: string'を使わないのですか? – NathanOliver
文字列 '' hhhhh "'は何文字ですか? *** ***ターミネーターを含む? –
'malloc'はこの問題とは関係ありません。あなたのキーはポインタです。ポインタを比較することが何を意味するかを考えてください。 – juanchopanza