GCC:
#include
using namespace __gnu_cxx;
struct compare_str
{
bool operator()(const char* p1, const char*p2) const
{
return strcmp(p1, p2) == 0;
}
};
int main(int argc, char* argv[])
{
hash_map, compare_str> StrIntMap;
StrIntMap["a"] = 111;
StrIntMap["b"] = 222;
return 0;
}
VC:
-
#include <hash_map>
-
using namespace std;
-
using namespace stdext;
-
-
struct CharLess : public binary_function<const char*, const char*, bool>
-
{
-
public:
-
result_type operator()(const first_argument_type& _Left, const second_argument_type& _Right) const
-
{
-
return(stricmp(_Left, _Right) < 0 ? true : false);
-
}
-
};
-
-
hash_map<const char*, int, hash_compare<const char*, CharLess> > CharHash;
-
CharHash["a"] = 123;
-
CharHash["b"] = 456;
-
char szInput[64] = "";
-
scanf("%s", szInput);
-
int val = CharHash[szInput];
若是int类型,可以不设置比较器,但对于指针类型则不行,例如char*。例如,下面的代码就会去比较"a"和"b"这两个常量的指针大小,这个时候就需要上面的比较器了。
阅读(3711) | 评论(0) | 转发(0) |