2017-01-18 58 views
0

当我在Linux终端上运行使用c++11 or c++17时,它的工作正常,我的例子程序unordered_map。我在使用c++11 or c++17eclipseNeon.1a Release(4.6.1)试图在同一程序,给出了许多错误消息,包括unordered_map,无匹配函数调用错误

没有匹配函数调用“升压::无序:: unordered_map> ::插入(INT,性病::对) ' refmap.insert(1,std :: make_pair(2,5));

#include <iostream> 
#include <boost/unordered_map.hpp> 
#include <utility> 
typedef boost::unordered_map<int, std::pair<int, int> > reference_map; 
reference_map refmap; 
int main(){ 

     refmap.insert(1, std::make_pair(2,5)); 
     return 0; 
    } 

回答

2

insert接受一个参数,而不是两个–一个std::pair<K const, V>(又名std::unordered_map<K,V>::value_type):

int main() { 
    refmap.insert(std::make_pair(1, std::make_pair(2, 5))); 
} 

采取的key和value分开参数的功能被命名为emplace,并应在大多数情况下是首选:

int main() { 
    refmap.emplace(1, std::make_pair(2, 5)); 
} 

Online Demo

+0

感谢,是说得很有道理,但为什么它工作在Linux终端 – AwaitedOne

+0

@AwaitedOne:不知道 - 它不应该,这是错误的。 – ildjarn

相关问题