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