映射插入中的参数不匹配错误 我是Javaer多年来,一个C++新手。最近我需要做一个C++项目,但是在使用C++时遇到一些不愉快的问题,其中一个是 STD:MAP< /COD>

映射插入中的参数不匹配错误 我是Javaer多年来,一个C++新手。最近我需要做一个C++项目,但是在使用C++时遇到一些不愉快的问题,其中一个是 STD:MAP< /COD>,c++,dictionary,stdmap,C++,Dictionary,Stdmap,我正在尝试将键值对插入到映射函数中 map[key]=value或map.emplace(key,value)工作正常,但是map.insert给了我[compilement error](),我完全搞不懂。有人能帮忙吗 class mystructure{ private: int value; public: mystructure(int v){ value=v; } void print(){ std::cout<&l

我正在尝试将键值对插入到映射函数中

map[key]=value
map.emplace(key,value)
工作正常,但是
map.insert
给了我[compilement 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;
}
类mystructure{
私人:
int值;
公众:
mystructure(intv){
值=v;
}
作废打印(){
std::cout因为接受
std::map::value_type
(即
std::pair
)作为其参数

您可以使用:

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


< /P> <代码>(新MyStult:(17))< <代码> > C++不是java。您在这里创建内存泄漏。在java中< <代码> new <代码>与C++中的<代码> new <代码>不一样。使用值类型,而不是指针。<代码> v.PuthSyBub(MySeal结构(17))

@PaulMcKenzie你说得对,谢谢。@ShuhaoZhangtony错误信息是什么?我试过了。我想我可能在CLion中发现了一个错误:在我遵循你的建议后,它仍然突出显示错误,但它编译…@ShuhaoZhangtony总是指你真正的编译器错误。那些突出显示工具和“曲线工具”不是100%正确。@ShuhaoZhangtony是的,IDE可能有问题。不管怎样,编译结果最终很重要。
mymap.insert(std::make_pair(temp.get_Value(), temp));
mymap.insert({temp.get_Value(), temp});