stl hash_map以char*作为键值时遇到的问题
大家看我下面这个程序我不知道有什么错误。
#include <stdio.h>
#include <ext/hash_map>
#include <string.h>
using namespace std;
using namespace __gnu_cxx;
struct eqstr {
bool operator() (char *s1, char *s2) const
{
return strcmp(s1, s2) == 0;
}
};
typedef hash_map<char *,int, hash<char *>, eqstr> Hash;
int main()
{
Hash hashdata;
FILE *fp = fopen("data.txt", "r"); //只有10行记录
FILE *fout = fopen("output.txt", "w");
char readStr[20];
while(fgets(readStr, sizeof(readStr), fp))
{
readStr[strlen(readStr)-1] = '\0';
hashdata[readStr]++;
}
printf("%d\n", hashdata.size()); //很大
Hash::iterator ite1 = hashdata.begin();
Hash::iterator ite2 = hashdata.end();
for(; ite1 != ite2; ++ite1)
{
fprintf(fout, "%s: %d\n", ite1->first, ite1->second);
}
}
这里遍历hash_map的时候值很大数量很多,而且我读入的文件只有10行记录,这个是为什么呢?
绝对领域控
12 years, 4 months ago