通过函数插入无序地图的正确方法

时间:2018-12-19 05:04:31

标签: c++

说我有这样的东西:

std::unordered_map<std::string, std::string> *map;

作为字段。我想写一个像这样的函数:

void myFunc(std::string& s, std::string& s2){
    map->insert(std::make_pair(s, s2));
}

我一生无法按照这些原则进行编译。很高兴发布更多代码。但是我已经将地图类型从字符串更改为整数,并且这没问题。谢谢!

1 个答案:

答案 0 :(得分:0)

您为什么使用指向地图的指针?我注意到了一些奇怪的问题。确保实际创建了地图。但是以下方法有效(无指针):

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

using namespace std;

class Test
{
public:
    explicit Test() { }

    inline void myFunc(const string& s, const string& s2) {
        map.insert(make_pair<string, string>(s.c_str(), s2.c_str()));
    }

    inline void Print() const {
        for (const auto& entry : map)
            cout << entry.first << ", " << entry.second << endl;
    }

private:
    unordered_map<string, string> map;
};

int main()
{
    unique_ptr<Test> test = make_unique<Test>();
    test->myFunc("Key", "Value");
    test->Print();
    getchar();
}