2015-11-02 102 views
0

我创建一个哈希表的家庭作业分配,和我运行槽的问题,我有密钥和数据类型如何模板类转换为int

template<typename T, typename K> 
struct Item 
{ 
    T data; 
    K key; 
    state flag; 
    Item() {} 
    Item(T d, K k, state f) { data = d; key = k; flag = f; } 
}; 

我一个模板结构需要将键(类型K)转换为int,我应该怎么做?

+0

'static_cast (key);'? – user463035818

+1

当然,这取决于你想传递给'K'的模板的类型。例如。如果它是'string',你可能必须编写一个模板专门化来完成转换。 – user463035818

+5

如果'K'是一种不能自然转换为'int'的类型? –

回答

0

最简单但不一定是最好的方法:从char指针开始到key并根据sizeof(key)使用所有字节,转换为指向int的指针并添加所有可能的ints并考虑额外的字节不适合最后一个int。这将始终返回一个int,但唯一值的保证取决于键的类型。


编辑:对于产品代码,更喜欢std::hash,正如已在评论中提到的那样。