C++ 如何将模板类转换为Int
我正在为家庭作业分配创建一个哈希表,我遇到了一个问题,我有一个带有键和数据类型的模板结构C++ 如何将模板类转换为Int,c++,templates,c++11,C++,Templates,C++11,我正在为家庭作业分配创建一个哈希表,我遇到了一个问题,我有一个带有键和数据类型的模板结构 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; } }; 模板 结构项 { T数据; K键; 国旗; 项(){} 项目(td,
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; }
};
模板
结构项
{
T数据;
K键;
国旗;
项(){}
项目(td,kk,状态f){data=d;key=K;flag=f;}
};
我需要将键(键入K)转换为int,我应该怎么做?最简单但不一定是最好的方法:从指向键的char指针开始,根据sizeof(key)使用所有字节,转换为指向int的指针,添加所有可能的int,并考虑不适合最后一个int的额外字节。这将始终返回int,但唯一值的保证取决于键的类型
编辑:对于生产代码,首选
std::hash
,如注释中所述。static\u cast(键)代码>?当然,这取决于要传递给K
模板的类型。例如,如果是string
,您可能需要编写一个模板专门化来进行转换。如果K
是一种不能自然转换为int
的类型,该怎么办?您的哈希表数据结构应该包含哈希函数作为参数。此函数负责将K转换为int。您只需调用它即可。您可能希望了解C++11标准库如何通过来处理此问题。