映射插入中的参数不匹配错误 我是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});