Hieronder volgt een instructie die een taak beschrijft, gekoppeld aan een input die verdere context biedt. Schrijf een antwoord dat het verzoek op de juiste manier afvult.

### Instructie:
Ik probeer automatische sjabloon argument aftrek te krijgen om te werken in C++. Ik heb een functie geschreven die een std accepteert::kaart met twee willekeurige typen als zijn invoer, en geeft een variabele terug met het eerste type als uitvoer. Het volgende voorbeeld werkt en compileert succesvol:.Map<std::string, int> map1; map1["apple"] = 1; string key1 = getkey(map1, 1);.. Het volgende doet niet:.Map<int, std:::string> map2; map2[1] = "apple"; int key2 = getkey(map2, "apple");.. De compiler zegt dat het niet kan leiden tot de types die worden gebruikt door de kaart. Wat is de oorzaak van dit?

###

### Antwoord:
Ik probeer automatische sjabloon argument aftrek te krijgen om te werken in C++. Ik heb een functie geschreven die een std accepteert::kaart met twee willekeurige typen als zijn invoer, en geeft een variabele terug met het eerste type als uitvoer. Het volgende voorbeeld werkt en compileert succesvol:.Map<std::string, int> map1; map1["apple"] = 1; string key1 = getkey(map1, 1);.. Het volgende doet niet:.Map<int, std:::string> map2; map2[1] = "apple"; int key2 = getkey(map2, "apple");.. De compiler zegt dat het niet kan leiden tot de types die worden gebruikt door de kaart. Wat is de oorzaak van dit?
Ik zou graag helpen met uw vraag! De reden waarom de compiler problemen heeft met het afleiden van de types die door de kaart in uw tweede voorbeeld worden gebruikt is dat de volgorde van de typen in de kaart is veranderd van het eerste voorbeeld. In het eerste voorbeeld, het sleuteltype is een std::string en het waardetype is een int. Echter, in het tweede voorbeeld, het sleuteltype is een int en het waardetype is een std::string. Dit verschil in volgorde is waardoor de compiler moeite heeft om de juiste types te gebruiken in de functieaanroep. Om dit probleem op te lossen, kunt u expliciet de types specificeren wanneer u de functie aanroept, zoals dit: int key2 = getkey<int, std:::string>(map2, "apple"); Door de templateargumenten expliciet aan te geven, kunt u de compiler welke types de juiste types van de kaart gebruiken, en de juiste types van de functie aan te wijzen.
Hieronder volgt een instructie die een taak beschrijft, gekoppeld aan een input die verdere context biedt. Schrijf een antwoord dat het verzoek op de juiste manier afvult.

### Instructie:
Ik probeer automatische sjabloon argument aftrek te krijgen om te werken in C++. Ik heb een functie geschreven die een std accepteert::kaart met twee willekeurige typen als zijn invoer, en geeft een variabele terug met het eerste type als uitvoer. Het volgende voorbeeld werkt en compileert succesvol:.Map<std::string, int> map1; map1["apple"] = 1; string key1 = getkey(map1, 1);.. Het volgende doet niet:.Map<int, std:::string> map2; map2[1] = "apple"; int key2 = getkey(map2, "apple");.. De compiler zegt dat het niet kan leiden tot de types die worden gebruikt door de kaart. Wat is de oorzaak van dit?

###

### Antwoord:
Ik zou graag helpen met uw vraag! De reden waarom de compiler problemen heeft met het afleiden van de types die door de kaart in uw tweede voorbeeld worden gebruikt is dat de volgorde van de typen in de kaart is veranderd van het eerste voorbeeld. In het eerste voorbeeld, het sleuteltype is een std::string en het waardetype is een int. Echter, in het tweede voorbeeld, het sleuteltype is een int en het waardetype is een std::string. Dit verschil in volgorde is waardoor de compiler moeite heeft om de juiste types te gebruiken in de functieaanroep. Om dit probleem op te lossen, kunt u expliciet de types specificeren wanneer u de functie aanroept, zoals dit: int key2 = getkey<int, std:::string>(map2, "apple"); Door de templateargumenten expliciet aan te geven, kunt u de compiler welke types de juiste types van de kaart gebruiken, en de juiste types van de functie aan te wijzen.