Note that I did not change the way multiplicity was initialised and filled. I only got rid of the std::copy (it took me weeks to figure out something was wrong there and now I don't remember the details...). How could the current code be improved without going back to the std::copy?