unordered_map,没有匹配函数调用错误

时间:2017-01-18 06:58:59

标签: c++ boost unordered-map

当我使用unordered_map在Linux终端中运行时c++11 or c++17的示例程序,它运行正常。我使用eclipseNeon.1a Release(4.6.1) c++11 or c++17中尝试了相同的程序,提供了许多错误消息,包括

  
    

没有用于调用'boost :: unordered :: unordered_map> :: insert(int,std :: pair)'的匹配函数        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;
    }

1 个答案:

答案 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)));
}

为键和值采用单独参数的函数名为emplace,在大多数情况下应该是首选:

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

Online Demo