小编use*_*111的帖子

带引用值的std :: unordered_map不起作用?

此代码无法在Visual Studio 2013中编译:

#include <iostream>
#include <unordered_map>

class MyClass
{
public:
    char a;
};

int main()
{
    std::unordered_map<int, MyClass&> MyMap;
    MyClass obj;
    obj.a = 'a';
    MyMap.emplace(1, obj);
    std::cout << MyMap[1].a;
}
Run Code Online (Sandbox Code Playgroud)

有了这些错误消息:

Error   1   error C2440: 'initializing' : cannot convert from 'int' to 'MyClass &'  c:\program files (x86)\microsoft visual studio 12.0\vc\include\tuple    746

Error   2   error C2439: 'std::pair<const _Kty,_Ty>::second' : member could not be initialized  c:\program files (x86)\microsoft visual studio 12.0\vc\include\tuple    746
Run Code Online (Sandbox Code Playgroud)

当我将其更改为指针时,它编译得很好.引用在std :: unordered_map中作为值类型无效吗?

使用boost :: unordered_map时,相同的代码可以正常工作.

c++ boost dictionary unordered

3
推荐指数
1
解决办法
916
查看次数

标签 统计

boost ×1

c++ ×1

dictionary ×1

unordered ×1