我正在尝试创建一个以 C 样式字符串为索引的多图,如以下代码段所示:
#include <cstring>
#include <map>
#include <iostream>
using namespace std;
int main(void)
{
int i, j;
int (*fn_pt)(const char *, const char *) = strcmp;
multimap<char *, char *, int (*)(const char *, const char *)>a(fn_pt);
for (i = 0; i < 2; i++)
{
char key[2];
sprintf(key, "%d", i);
for (j = 0; j< 5; j++)
{
char value[2];
sprintf(value, "%d", j);
a.insert(pair<char *, char *>(key, value));
}
}
for (i = 0; i < 2; i++)
{
char key[2];
sprintf(key, "%d", i);
multimap<char *, char *>::iterator it = a.find(key);
while (it != a.end())
{
cout << it->first << "\t" << it->second <<endl;
it++;
}
}
}
只需将上述程序中的键更改为整数即可得到预期的结果。但是,在字符串上索引多重映射给了我一些意想不到的东西(只有 1 和 4 的行由空格分隔),而不是向我显示使用的每个键值的每个值。
我在哪里错了?
谢谢