Signature here should not require copies, etc. Should be something like:

void compute(vector<UInt> &inputVector, vector<UInt> &inputVector, bool learn);

Or even:

void compute(UInt *inputVector, UInt *inputVector, bool learn);

The latter form can be passed back and forth without copies even with numpy.