我是Javaer多年,是C++中的新手。最近我需要在C++項目上工作,但在使用C++時遇到一些令人不快的問題,其中一個是std:map
。地圖插入中的參數不匹配錯誤
我正試圖在地圖函數中插入一個鍵值對。
map[key]=value
或map.emplace(key,value)
工作正常,但map.insert
給我[編譯錯誤](),我完全失去了。有人可以幫忙嗎?
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(17)))'C++中ñ Java。你在這裏創建一個內存泄漏。 Java中的'new'與C++中的'new'不同。使用值類型,而不是指針。 'v.push_back(mystructure(17));' – PaulMcKenzie
@PaulMcKenzie你是對的,謝謝。 –