Programming 版 (精华区)
发信人: zhangyan (Embrace the sunshine), 信区: Programming
标 题: Re: Help about sgi-stl
发信站: 哈工大紫丁香 (2002年05月28日07:03:12 星期二), 站内信件
hehe 使用string的时候,的确有问题
SGI的STL中,hash_map只对int,char*等原生类型作了一些特化
而对string等类型,hash<T>并不起作用
hash<T>定义为
template <class T> class hash<T>{};
如果要使用hash<string>的话
需要对hash<string>做特化,或者自己写一个hash函数,并将函数指针传入
下面给出一种模板部分特化的方法:
#include <hash_map>
#include <string>
using namespace std;
namespace std{
//partial specialization
template <> struct hash<string> {
size_t operator()(const string& _str) const {
return __stl_hash_string(_str.c_str()); //call default hash function
}
};
}
int main(){
string strFirstWord = "Hello";
hash_map<string, int> m_Hash_Word;
m_Hash_Word[strFirstWord]=1;
}
【 在 domino (爱咋咋地) 的大作中提到: 】
: 谁用过hash_map
: 介绍一下!
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 218.7.34.3]
※ 修改:·zhangyan 於 06月08日10:12:19 修改本文·[FROM: 天外飞仙]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:10.623毫秒