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++ 声明将字符串映射到模板的无序映射时出错 模板 结构散列; 模板类WUG{ 公众: WUG(){ 无序的_映射顶点映射;//问题 } };_C++_Templates_Data Structures_Compiler Errors_Unordered Map - Fatal编程技术网

C++ 声明将字符串映射到模板的无序映射时出错 模板 结构散列; 模板类WUG{ 公众: WUG(){ 无序的_映射顶点映射;//问题 } };

C++ 声明将字符串映射到模板的无序映射时出错 模板 结构散列; 模板类WUG{ 公众: WUG(){ 无序的_映射顶点映射;//问题 } };,c++,templates,data-structures,compiler-errors,unordered-map,C++,Templates,Data Structures,Compiler Errors,Unordered Map,我在这段代码中遇到了一些错误,它并没有告诉我什么。我应该如何正确申报 我收到的错误消息是: [错误]模板参数2无效 [错误]模板参数5无效您有使用名称空间std从stdnamesapce导入所有名称,包括std::hash,修复: template<typename T> struct hash; template<typename T> class WUG{ public: WUG(){ unordered_map<

我在这段代码中遇到了一些错误,它并没有告诉我什么。我应该如何正确申报

我收到的错误消息是:
[错误]模板参数2无效

[错误]模板参数5无效

您有
使用名称空间std
std
namesapce导入所有名称,包括
std::hash
,修复:

template<typename T>
struct hash;

template<typename T> class WUG{
    public:
        WUG(){
            unordered_map<string,typename T,hash> vertexmap; //Problem
        }
};
struct-MyHash;
模板
乌格班{
公众:
WUG(){
无序的_映射顶点映射;//问题
}
};
或使用标准哈希:

struct MyHash;

template <typename T>
class WUG {
public:
  WUG() {
    unordered_map<string, T, MyHash> vertexmap; //Problem
  }
};
模板
乌格班{
公众:
WUG(){
无序的_映射顶点映射;//问题
}
};

看起来您可能正在使用
名称空间std。这可能会在您声明的
标准::散列
::散列
之间造成一些混淆。这是一个好消息。此外,编译器非常清楚
T
命名类型。这是一个模板参数。你的映射由三个参数组成,一个映射只接受两个参数,就像一个键值对-map@zenwraight这是不正确的。可能有多达5个模板参数,其中3个提供默认值。啊,我不知道,嗯,学点东西很好here@BatzorigZorigoo如果要使用
std::hash
,请不要向映射提供第三个模板参数。这是默认的哈希实现,用于
std::unordered_map
@BatzorigZorigoo
std::hash
以及许多其他标准类型。@FrançoisAndrieux Nice!但我删除了使用名称空间std;并在需要的地方添加了std::。但我还是有一样的error@BatzorigZorigoo如果您要对问题进行更改,请编辑问题。如果这些改变会彻底改变问题,请发布另一个问题。
template <typename T>
class WUG {
public:
  WUG() {
    unordered_map<string, T> vertexmap; //Problem
  }
};