地图插入中的参数不匹配错误

时间:2016-07-10 03:53:34

标签: c++ dictionary stdmap

我是Javaer多年,也是C ++的新手。最近我需要处理一个C ++项目,但在使用C ++时遇到一些令人不快的问题,其中一个是std:map

我正在尝试将键值对插入到地图函数中。

map[key]=valuemap.emplace(key,value)工作正常,但map.insert给了我[编译错误](error),我完全迷失了。有人可以帮忙吗?

class mystructure{
private:
    int value;
public:
    mystructure(int v){
        value=v;
    }
    void print(){
        std::cout<<value<<std::endl;
    }
    std::string get_Value(){
        return std::to_string(value);
    }
};

int main(void) {

    std::map<std::string, mystructure> mymap;
    std::vector<mystructure> v = std::vector<mystructure>();
    v.push_back(*(new mystructure(17)));
    v.push_back(*(new mystructure(12)));
    v.push_back(*(new mystructure(23)));
    for (int i=0;i<v.size();i++) {
        mystructure temp=v.at(i);
        mymap.insert(temp.get_Value(),temp);//compilation error
    }
    return 0;
}

1 个答案:

答案 0 :(得分:3)

因为std::map::insert接受std::map::value_type(即std::pair<const Key, T>)作为参数。

您可以使用:

mymap.insert(std::pair<const std::string, mystructure>(temp.get_Value(), temp));

mymap.insert(std::make_pair(temp.get_Value(), temp));

mymap.insert({temp.get_Value(), temp});

LIVE