Ho il codice Python che contiene il seguente codice.Traduzione del dizionario Python in C++
d = {}
d[(0,0)] = 0
d[(1,2)] = 1
d[(2,1)] = 2
d[(2,3)] = 3
d[(3,2)] = 4
for (i,j) in d:
print d[(i,j)], d[(j,i)]
Purtroppo loop su tutte le chiavi in python non è in realtà abbastanza veloce per il mio scopo, e mi piacerebbe tradurre questo codice C++. Qual è la migliore struttura dati C++ da usare per un dizionario python che ha le tuple come chiavi? Quale sarebbe l'equivalente in C++ del codice sopra?
Ho esaminato le matrici sparse nella libreria boost, ma non ho trovato un modo semplice per eseguire il ciclo solo sugli elementi diversi da zero.
Avete considerato un altro layout di dati. Se (i, j) è sempre accoppiato con (j, i), allora potrebbe non essere necessario entrambi. Potresti semplicemente costruire l'associazione nel momento in cui stai costruendo il dizionario. Si può semplicemente memorizzare un ditt di (i, j) in entrata (d (i, j), d (j, i)). Ciò presuppone che i numeri nella tupla possano essere ordinati arbitrariamente, il che è probabilmente vero. –
Inoltre, se stai solo camminando con le tuple, salvale in un elenco e cammina nell'elenco. –