Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将模板类转换为Int_C++_Templates_C++11 - Fatal编程技术网

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标准库如何通过来处理此问题。