Ho scritto un piccolo programma di utilizzo di std :: map qui come segue.come interrompere la conversione automatica da int a float e viceversa in std :: map
int main()
{
map<int,float>m1;
m1.insert(pair<int,float>(10,15.0)); //step-1
m1.insert(pair<float,int>(12.0,13)); //step-2
cout<<"map size="<<m1.size()<<endl; //step -3
ho creato una mappa con tipo int come chiave e float tipo valore (valore-chiave) coppia per la mappa m1
passo-1 creato un normale paio int flottante ed inserito alla mappa.
step-2 Creata una coppia cross float-int e inserita per mappare. Ora so che la conversione implicita sta facendo inserire questa coppia nella mappa.
Qui semplicemente non voglio che la conversione implicita avvenga e si dovrebbe dare l'errore del compilatore.
Che tipo di modifiche devo fare in questo programma/mappa per far sì che il comigeratore contrassegni un errore mentre proviamo a eseguire un'operazione di tipo step-2?
Grazie in anticipo.
Puoi approfondire il motivo per cui è necessario il terzo parametro di modello? – Gareth
Senza di esso, il compilatore si lamenta che non può corrispondere ai parametri del modello per la prima chiamata map_insert(), poiché 15.0 è un doppio, non un float. – dshin
Questa è difficilmente una soluzione (o una risposta) al suo problema: è solo un'API completamente diversa che evita di costruire una coppia std :: tutti insieme. Anche se in questo senso avrebbe "funzionato", rientra anche nella categoria banale. –