Ho la necessità di convertire del codice per renderlo più performante e ne sto approfittando per studiare su www.learncpp.com anche perchè era da un pò che volevo aggiungere nel mio bagaglio di skill il c++.
Ma sono inceppato in un punto nella conversione del software.
In python una cosa simile:
codice:
class Info:
def __init__(self, actions, key):
self.key = key
self.regret = {}
self.actions = []
for (action, size) in actions:
self.actions.append((action, size))
self.regret[action, size] = 0
self.num_acts = len(self.actions)
# Inizializzazione d'esempio
i1 = Info([('left', 100), ('right', 0), ('up', 40)], 'first')
i2 = Info([('down', 20), ('down', 50)], 'second')
Ovviamente il problema maggiore (se non unico) sta nella chiave del dizionario self.regret. Contando che è un oggetto che viene inizializzato parecchie volte (un paio di milione di volte), anche in ottica di performance, ho pensato a questo:
1 creare un enum:
codice:
enum Actions {
LEFT = 100,
RIGHT = 0,
UP = 40,
DOWN_20 = 20,
DOWN_50 = 50
}
Passare come argomento della classe qualcosa in questo modo:
codice:
Actions act[] = {LEFT, RIGHT, UP};
Info info(*act, "first");
Ciclare il tutto e gestire l'array self.regret e self.actions con std::vector.
Secondo voi è ok o ci sono soluzioni molto più ottimali/semplici?
Grazie