std::function può essere memorizzata in un vector (è una classe di type-erasure che nasce apposta per questo), ma credo si perda qualcosina in performance dato che ci sono un po' di giri di indirezione prima di richiamare la funzione vera e propria - std::function di fatto contiene un puntatore ad un oggetto polimorfico che a sua volta contiene il puntatore a funzione o il puntatore a metodo+il "this" su cui richiamarlo, per cui ci sono tre/quattro dereferenziazioni prima di arrivare a chiamare la funzione vera e propria, e delle allocazioni nell'heap al momento di creare un oggetto di tipo std::function. Se questo per te è un problema dal punto di vista delle performance, probabilmente dovrai usare i normali puntatori a funzione.