Я - 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++ является N от Java. Здесь вы создаете утечку памяти. «Новый» в Java - это не то же самое, что «новый» в C++. Используйте типы значений, а не указатели. 'v.push_back (mystructure (17));' – PaulMcKenzie
@PaulMcKenzie вы правы, спасибо. –