小编FS.*_*S.L的帖子

与map和unordered_map相关的编译错误:"尝试引用已删除的函数"

我想在C++ STL中使用map来创建vector和int之间的关联.但是我得到了多个编译错误,代码如下:

#include <vector>
#include <map>
#include <unordered_map>

using namespace std;

int main(void)
{
    unordered_map<vector<char>, int> mp;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并在VC++中得到此编译错误:

错误C2280:'std :: hash <_Kty> :: hash(const std :: hash <_Kty>&)':尝试引用已删除的函数

但是,如果我改变我的代码,如下所示,那么代码可以正确编译:

#include <vector>
#include <map>
#include <unordered_map>

using namespace std;

int main(void)
{
    map<vector<char>, int> mp;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在StackoverFlow中发现了这个问题,其标题是:使用自定义类类型作为键的C++ unordered_map.但我想知道为什么使用map <>可以通过编译检查但无法使用unordered_map <>?

c++ c++11

6
推荐指数
2
解决办法
3834
查看次数

标签 统计

c++ ×1

c++11 ×1