首页 文章

插入到unordered_map中的类型转换问题[重复]

提问于
浏览
-1

这个问题在这里已有答案:

我想要做的是在c类中基本上有一个键值存储,以便我可以通过键查找它的值 . 我一直在尝试使用unordered_map来执行类似于此的代码 . (我已经简化了一点,但你明白了) .

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

class manager
{
public:
manager() {}
~manager(){}

void add(const std::string& name, unsigned int val) {
    map.insert(std::make_pair<std::string, unsigned int>(name, val));
}

unsigned int GetValue(const std::string& key) {
    return map[key];
}

std::unordered_map<std::string, unsigned int> map;
};

int main(void)
{
manager* mgr = new manager();
mgr->add("Bob",22);

std::cout << "Bob is" << mgr->GetValue("Bob") << std::endl;

return 0;

}

我只想以一种方式存储名称和值,以便我可以轻松地按名称查找值,并在完成后轻松清理它以避免内存泄漏 .

当我在Linux(g -o test test.cpp)上编译它时,我得到以下内容:

test.cpp:在成员函数'void manager :: add(const string&,unsigned int)':test.cpp:12:65:error:没有用于调用'make_pair(const string&,unsigned int&)'map的匹配函数.insert(std :: make_pair(name,val)); ^来自/ usr / include / c /6/bits/stl_algobase.h:64:0的文件,来自/ usr / include / c /6/bits/char_traits.h:39,来自/ usr / include / c / 6 / string:40,来自test.cpp:1:/ usr / include / c /6/bits/stl_pair.h:497:5:注意:候选人:模板constexpr std :: pair :: __ type,typename std :: __decay_and_strip <_T2> :: __ type> std :: make_pair(_T1 &&,_T2 &&)make_pair(_T1 && __ x,_T2 && y)^ ~~~~~~~~ / usr / include / c /6/bits/stl_pair.h:497 :5:注意:模板参数推断/替换失败:test.cpp:12:56:注意:不能将'name'(类型'const string ')转换为'std: : cxx11 :: basic_string &&'map.insert(std :: make_pair(name,val));

1 回答

  • 2

    std::make_pair签名是错误的 . 应该:

    map.insert(std::make_pair(name, val));
    

相关问题