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
@BatzorigZorigoostd::hash
以及许多其他标准类型。@FrançoisAndrieux Nice!但我删除了使用名称空间std;并在需要的地方添加了std::。但我还是有一样的error@BatzorigZorigoo如果您要对问题进行更改,请编辑问题。如果这些改变会彻底改变问题,请发布另一个问题。
template <typename T>
class WUG {
public:
WUG() {
unordered_map<string, T> vertexmap; //Problem
}
};