没有带有unordered_map的模板功能实例

时间:2014-02-21 06:40:44

标签: c++ c++11 stl

我试图使用unordered_map创建哈希表,但在Visual Studio 2010上出现了错误

IntelliSense: no instance of function template "std::tr1::unordered_map<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>::emplace [with _Kty=std::string, _Ty=std::string, _Hasher=std::hash<std::string>, _Keyeq=std::equal_to<std::string>, _Alloc=std::allocator<std::pair<const std::string, std::string>>]" matches the argument list

以下代码段。当我使用emplace调用时出现上述错误。如何解决这个错误?

#include<iostream>
#include<unordered_map>
#include<string>

int main()
{
    std::tr1::unordered_map <std::string, std::string> hashtable;
    std::tr1::unordered_map <int,int> intmap;
    intmap.emplace(10,20);
    hashtable.emplace("www.element14.com","184.51.49.225");
    std::cout << "IP Address : " <<hashtable["www.element14.com"] <<std::endl;
    return 0;
}

1 个答案:

答案 0 :(得分:1)

Visual C ++ 2010(实际上是2012年)还不支持可变参数模板,这就是应该如何实现“emplace”。在2012年,他们使用一堆令人讨厌的宏来解决这个问题,但在2010年,emplace只针对一个参数实现(因此几乎等同于插入)。