I don't think this is a big deal but IIRC ENDF lets you know how many of the data sets it has in the header.  Thus you could pre-allocate the vectors to be the right size with `resize()` before entering the loop and then avoid all of the `push_back()` calls.