Se ho due map<string, int>
s come posso scambiare un elemento da ogni map
?Come posso scambiare gli elementi della mappa senza spostarli?
Ad esempio:
map<string, int> ps{ { "triangle", 0 }, { "cross", 1 }, { "square", 2 }, { "circle", 3 } };
map<string, int> xbox{ { "y", 0 }, { "a", 1 }, { "b", 2 }, { "x", 3 } };
swap(move(ps["cross"]), move(xbox["x"]));
La dichiarazione swap
è chiaramente sbagliato, ma che spiega quello che voglio fare. Dopo la dichiarazione swap
mi piacerebbe ps
per contenere:
{ "triangle", 0 }
{ "x", 3 }
{ "square", 2 }
{ "circle", 3 }
E xbox
per contenere:
{ "y", 0 }
{ "a", 1 }
{ "b", 2 }
{ "cross", 1 }
mi aspetto che ci sia un buon modo per fare questo con la sintassi mossa C++ 11 di, ma, se possibile, mi piacerebbe una risposta che anche descrive come realizzarlo su C++ 03.
Lei non è scambiare "croce" con "x". Stai spostando "croce" da ps a xbox e "x" da xbox a ps. Sono due operazioni indipendenti. –
@NeilKirk Giusto è per questo che dico nella domanda "La dichiarazione swap è chiaramente sbagliata, ma questo spiega cosa voglio fare." Spostare gli elementi nella 'mappa' opposta è quello che sto cercando di fare, come è spiegato da ciò che voglio che la risultante' map's assomigli. –
Non so in alcun modo. Non me ne preoccuperei a meno che non sia davvero un problema di prestazioni. Nel qual caso potresti scoprire che una mappa piatta (la struttura dei dati esiste in boost credo) potrebbe essere ancora più veloce. –